Имитация сценария Fire & Forget с использованием C# Threading
У меня есть веб-сервис, выполнение которого занимает много времени. Я планирую делегировать задачу обработки в фоновый поток и немедленно вернуть ответ о подтверждении пользователю.
В этом случае меня беспокоило время жизни фонового потока.
Будет ли фоновый поток завершать делегированную задачу до того, как основной метод / поток завершит выполнение?
2 ответа
Решение
Вы должны вызывать свой сервис асинхронно.
var service = new YouServiceClient();
service.SomeMethodCompleted +=
(sender, args) +=
{
// Put code here to handle the response and extract a return value or whatever.
}
service.SomeMethodAsync();
Обратитесь к разделу Как: вызвать асинхронные операции службы WCF для получения дополнительной информации.
Похоже, ваш фоновый поток может быть прерван, если пул приложений будет переработан. Посмотрите на эту статью ThreadPool.QueueUserWorkItem в веб-сервисе для задачи "Огонь и забудь"