140 messaggi dal 12 febbraio 2016
Ciao a tutti,
rieccomi con la mia nuova domanda.
Vorrei capire come utilizzare il metodo Task.Run() per far eseguire alcuni lavori in maniera asincrona in una ActionResult di un progetto MVC.

Dato che ho vari lavori da eseguire in una ActionResult ho pensato di dividere tutto il codice in due/tre metodi e richiamarli in maniera asincrona.

Ho provato in questo modo:

public ActionResult Index()
        {

            var myTask = Task.Run(() => Lavorouno(model));
            string result = await myTask;            
            return View();
        }

 private void Lavorouno(MyViewmodel model)
        {
           ..........

        }


In debug vedo che viene eseguito il metodo Lavorouno ma in realtà non fa nulla.
Se invece richiamo in maniera sincrona sempre il metodo Lavorouno allora funziona correttamente.
Come posso dividere il codice di una ActionResult in vari metodi asincroni?
937 messaggi dal 11 febbraio 2013
Mi sembra una situazione che gli esperti definiscono 'fire-and-forget'

public async Task<IActionResult> Index()
        {

            await LavorounoAsync(model);
                    
            return View();
        }

 private async Task LavorounoAsync(MyViewmodel model)
        {
           await Task.Run(() => {
               //...
           });
        }


Cosi dovrebbe andare

https://www.pluralsight.com/guides/advanced-tips-using-task-run-async-wait
questo mi pare buono...
Modificato da jjchuck il 05 dicembre 2019 19:24 -
157 messaggi dal 30 novembre 2004
Se non hai bisogno di aspettare il risultato del task e vuoi andare avanti togli await

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.