Контроллеры и потоки - PullRequest
       16

Контроллеры и потоки

0 голосов
/ 05 апреля 2010

Я вижу этот код в проекте, и мне интересно, безопасно ли это делать:

(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, или это нормально (кроме случаев, когда пул потоков не используется).

Спасибо за информацию!

1 Ответ

0 голосов
/ 05 апреля 2010

Даже если это верно и работает нормально сейчас, это просто кажется рискованным. API и / или базовая реализация всегда могут измениться в будущей версии, что может привести к поломке этого кода.

Гораздо эффективнее передавать все необходимые данные новому потоку в SomeAction, когда он создается. Например, используя ParameterizedThreadStart, как показано в Передача параметров в потоки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...