Je vois ce code dans un projet et je me demande s'il est sûr de le faire:Contrôleurs et fils
(ASP.NET MVC 2,0)
class MyController
{
void ActionResult SomeAction()
{
System.Threading.Thread newThread = new System.Threading.Thread(AsyncFunc);
newThread.Start();
}
void AsyncFunc()
{
string someString = HttpContext.Request.UrlReferrer.Authority + Url.Action("Index", new { controller = "AnotherAction" });
}
}
est le contrôleur réutilisé, peut-être changer le contenu de HttpContext.Request et Url, ou est-ce bien (sauf pour ne pas utiliser le pool de threads).
Merci pour les informations!
Ceci est correct. Le type de contrôleur (et HttpContext lui-même) ne sont pas thread-safe. Cela pourrait créer une exception, même si tout ce que vous faites est de lire des données. Et les exceptions non gérées sur les threads ThreadPool peuvent faire tomber le processus de travail entier, tuant toutes les autres demandes que votre application est en train de servir à ce moment. – Levi
Mais vous ne dites pas la même chose. Justin pense que ça devrait être OK (mais ce n'est pas une bonne idée) pendant que vous pensez que ça risque de se produire. – Rabbit
Non, tout ce que je disais était * * même si elle fonctionne bien maintenant ... donc je pense qu'il pourrait jeter aussi bien :) –