2010-06-12 61 views
0

我有一个多线程的Windows服务,每隔24小时左右就会不可预知地停止运行一次。我正在写入事件日志,这很好,但是当服务崩溃时,事件日志中没有消息(即使AutoLog = true,服务也会停止)。是否有办法将未捕获的异常直接写入日志,即使它们不在原始线程中?将多线程窗口服务写入事件日志中的例外

回答

1

首先,你产生的线程应该有一个顶级的try { } ... catch { }块,它捕获(并且,如果适当的话,吞下或重新抛出)抛出的异常。除此之外,您可以使用AppDomain.UnhandledException事件捕获任何未处理的异常并将其注销。

+0

你会在顶级尝试抓住什么?在那个级别上,我假设你不确定你在捕捉什么,在那种情况下,我认为你不应该捕捉任何东西? – Dlongnecker 2010-06-15 18:31:10

+0

@Ziplin:这将是一个“catch”和“throw”场景。虽然无法从异常中恢复,但在顶层捕获它可让您记录信息(或类似信息),然后重新抛出它。 – 2010-06-15 18:38:45

+0

所以在这种情况下可以捕获(例外e){//日志;扔e; }?我以为那总是一个不是没有的 – Dlongnecker 2010-06-15 20:33:07