none
LLamar una función asincrona desde un metodo sincrono RRS feed

  • Pregunta

  • Hola tengo una funcion public, asincrona y que no retorna nada en mi programa. Me gustaría saber como hacer para llamarla desde un metodo sincrono? Muchas gracias por su tiempo y respuestas estimados.
    viernes, 28 de agosto de 2020 1:01

Todas las respuestas

  • Hola MrMaradona,

    Si tienes un método asincrónico simple que no necesita sincronizarse con su contexto, puedes usar Task.WaitAndUnwrapException así:

    var task = MyAsyncMethod();
    
    var result = task.WaitAndUnwrapException();

    No deberías usar Task.Wait o Task.Result porque envuelven las excepciones en AggregateException. Esta solución solo es apropiada si MyAsyncMethod no se sincroniza con su contexto. En otras palabras, cada espera en MyAsyncMethod debe terminar con ConfigureAwait (false). Esto significa que no puedes actualizar ningún elemento de la interfaz de usuario ni acceder al contexto de solicitud de ASP.NET. Si MyAsyncMethod necesita volver a sincronizarse con su contexto, entonces es posible que pueda usar AsyncContext.RunTask para proporcionar un contexto anidado:

    var result = AsyncContext.RunTask (MyAsyncMethod).Result;
    
    // o
    
    var result = AsyncContext.Run (MyAsyncMethod);

    Espero que te sea de ayuda. Quedo pendiente de cualquier actualización. Gracias por levantar tu consulta en los foros de msdn.

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 


    viernes, 28 de agosto de 2020 1:18
    Moderador
  • hola

    >>tengo una funcion public, asincrona

    Ayudaria si pones el codigo de como implementas esta funcion y como la invocas

    usas async/await ? defienes una Task?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 28 de agosto de 2020 5:13
  • Hola MrMaradona,

    ¿Alguna novedad sobre tu pregunta? ¿Han sido útiles las respuestas proporcionadas? Por favor no olvides marcar una respuesta si resolviste tu consulta.

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    jueves, 3 de septiembre de 2020 1:03
    Moderador