Можно ли получить Task.Result во время Application_Start? - PullRequest
0 голосов
/ 25 октября 2019

Мне нужно await выполнить некоторую операцию из обработчика событий Application_Start для события System.Web.HttpApplication.Start.

protected void Application_Start()
{
  await SomeOperationAsync();
}

Поскольку это не обработчик цикла событий верхнего уровня, как внастольное приложение на Windows, я не уверен, что могу ли я обработать Application_Start обработчик async примерно так.

protected async void Application_Start()
{
  await SomeOperationAsync();
}

Итак, другой вариант, который у меня есть, - остановить потокв течение времени асинхронная операция SomeOperation находится в полете. Какой вид поражает всю цель наличия SomeOperationAsync. С таким же успехом я мог бы иметь это SomeOperation.

protected void Application_Start()
{
  var result = SomeOperationAsync().GetAwaiter().GetResult(); // or just SomeOperation().Result;
}

Итак, я задаю вопрос: можно ли остановить поток, выполняющий Application_Start в приложении ASP.NET MVC? ?

Если бы это был один из рабочих потоков, обслуживающих пользовательский запрос, я бы беспокоился о взаимоблокировках. Но так как это происходит во время запуска приложения, я думаю, что все должно быть в порядке.

Но я хочу спросить тех, кто знает лучше.

Я использую таргетинг ASP.NET MVC 5.2.4. NET Framework 4.6.1.

...