Мне нужно 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.