Мой сценарий:
- Служба Windows .NET 4
- Я опрашиваю базу данных на наличие сущностей.
- Когда появляются новые объекты, они добавляются в файл
BlockingCollection
. - В сервисе
OnStart
я создаюSystem.Threading.Tasks.Task
, задачей которого является перечислениеBlockingCollection
(используяGetConsumingEnumerable()
).
Проблема у меня вот в чем:
- Когда в задаче возникает необработанное исключение, я хочу, чтобы это исключение регистрировалось, а служба останавливалась.
- Я не могу поймать исключения из задачи, пока не вызову
Task.Wait()
. - Если я вызову
Task.Wait()
, методOnStart
заблокируется, и служба никогда не завершит запуск.
Итак, как я могу заставить это работать?