Je souhaite exécuter du code à partir d'une action du contrôleur ASP.NET MVC dans un nouveau thread/de manière asynchrone. Je ne me soucie pas de la réponse, je veux tirer et oublier et retourner l'utilisateur une vue pendant que la méthode async fonctionne en arrière-plan. Je pensais que la classe BackgroundWorker
était appropriée pour cela? Pourquoi ce code entraîne-t-il un délai de 10 secondes avant de renvoyer la vue? backgroundworker bloquant l'action du contrôleur MVC
public ActionResult MyAction()
{
var backgroundWorker = new BackgroundWorker();
backgroundWorker.DoWork += Foo;
backgroundWorker.RunWorkerAsync();
return View("Thankyou");
}
void Foo(object sender, DoWorkEventArgs e)
{
Thread.Sleep(10000);
}
Pourquoi la vue n'est-elle pas retournée instantanément? Plus précisément, que dois-je faire pour que cela fonctionne?
Merci
Cheers, demande pourquoi l'arrière-plan a travaillé blocs bien? –
Vous pouvez voir le code de base de BackgroundWorker pour le savoir. BackgroundWorker est un composant WinForms et je pense qu'il n'est pas correct de l'utiliser dans ASP.NET. – bniwredyc
Au lieu de créer manuellement Threads, vous devriez probablement utiliser ThreadPool.QueueUserWorkItem –