【发布时间】:2011-12-07 21:21:32
【问题描述】:
我的场景:
- Windows 服务 .NET 4
- 我在数据库中轮询实体。
- 当新实体进入时,它们会被添加到
BlockingCollection。 - 在服务的
OnStart中,我创建了一个System.Threading.Tasks.Task,其工作是枚举BlockingCollection(使用GetConsumingEnumerable())。
我遇到的问题是这样的:
- 当任务中发生未处理的异常时,我希望记录异常并停止服务。
- 除非我调用
Task.Wait(),否则我无法从任务中捕获异常。 - 如果我调用
Task.Wait()OnStart方法阻塞并且服务永远不会完成启动。
那么我怎样才能做到这一点呢?
【问题讨论】:
-
不能在Task body中捕获所有异常并适当处理吗?
-
无法处理出乎意料的事情。
标签: .net multithreading exception-handling windows-services task-parallel-library