0
我看到這個代碼在一個項目中,我不知道它是安全的事:控制器和線程
(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" });
}
}
被重用控制器,可能改變HttpContext.Request和Url的內容,或者這很好(除了不使用線程池)。
感謝您的信息!
這是正確的。 Controller類型(和HttpContext本身)不是線程安全的。這可能會引發異常,即使您只是在讀取數據。並且ThreadPool線程上的未處理異常可能會導致整個工作進程失效,從而導致您的應用程序碰巧正在服務的其他任何請求都被終止。 – Levi 2010-04-05 18:01:43
但你不是說同樣的事情。賈斯汀認爲,當你認爲它可能拋出時,它應該是確定的(但不是一個好主意)。 – Rabbit 2010-04-06 07:48:00
不,我所說的只是*即使*它現在工作正常......所以我認爲它可能會拋出:) – 2010-05-16 13:11:14