Имитация сценария 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 в веб-сервисе для задачи "Огонь и забудь"

Другие вопросы по тегам