У меня есть контроллер web api 2, клиент запрашивает контроллер для некоторого вида поколений html (состоит из изображений, файлов и т. Д.).Поскольку процессу требуется некоторое время, и я не хочу, чтобы пользователи ждали, я использовал следующий подход в контроллере:
...Controller(){
Task.Run(() =>
{
//calling heavy duty method to download files where Task.WaitAll() resides
DownloadAndRename()
});
}
DownloadAndRename(){
//created some child task here and run them in task.waitall()
//Task.WaitAll() here
}
Я создал задачи для каждого файла для загрузки, переименования и других процессов.,Затем выполните их в Task.WaitAll ().
Когда я запускаю приложение локально, все в порядке.Но когда я выполнял развертывание на своем тестовом сервере, он выдавал следующее исключение:
Message: System.Threading.ThreadAbortException: Thread was being aborted.
PS На моем компьютере в пуле приложений работает только одно приложение, тогда как на моем тестовом сервере их 8Конкретный пул.
Как мне преодолеть исключение?
Обновление 1: я попытался, удалив task.WaitAll и выполнить реализацию без использования Task .Тем не менее, я получаю ошибку прерывания потока, я думаю, что каким-то образом время ожидания Task.Run () истекло.