Вам понадобится некоторый примитив синхронизации, связанный с событием (например, ManualResetEventSlim), который будет сигнализироваться в обработчике события.Тогда ваш поток запросов может ожидать события и собирать результаты после того, как событие произошло, и генерировать ответ
Однако более естественной моделью может быть создание службы в качестве асинхронной службы и завершение обработки только приасинхронная операция завершена - я создал образец этого некоторое время назад