Здравствуйте, Аноним, Вы писали:
В связи с такими задачами и был придуман механизм асинхронного вызова. Для этого в web сервисе делаем методы:
public Guid StartOperation();
public bool IsOperationFinished(Guid operationId);
public void StopOperation(Guid operationId);
В StartOperation начинаем исполнение задачи в другом потоке, регистрируем ее в своей внутренней hash-таблице, где задаче дается ключ в виде guid-а, а в качестве значения идет поток (или номер исполнителя) в котором выполняется задача. После этого возвращаем клиенту этот Guid, не дожидаясь завершения задачи. Семантика двух остальных методов очевидна.
Если вам надо только запустить задачу, а контроль и возможность отмены не требуется, то решение упрощается до
public void StartOperation();