0
我有一个多线程的Windows服务,每隔24小时左右就会不可预知地停止运行一次。我正在写入事件日志,这很好,但是当服务崩溃时,事件日志中没有消息(即使AutoLog = true,服务也会停止)。是否有办法将未捕获的异常直接写入日志,即使它们不在原始线程中?将多线程窗口服务写入事件日志中的例外
我有一个多线程的Windows服务,每隔24小时左右就会不可预知地停止运行一次。我正在写入事件日志,这很好,但是当服务崩溃时,事件日志中没有消息(即使AutoLog = true,服务也会停止)。是否有办法将未捕获的异常直接写入日志,即使它们不在原始线程中?将多线程窗口服务写入事件日志中的例外
首先,你产生的线程应该有一个顶级的try { } ... catch { }
块,它捕获(并且,如果适当的话,吞下或重新抛出)抛出的异常。除此之外,您可以使用AppDomain.UnhandledException
事件捕获任何未处理的异常并将其注销。
你会在顶级尝试抓住什么?在那个级别上,我假设你不确定你在捕捉什么,在那种情况下,我认为你不应该捕捉任何东西? – Dlongnecker 2010-06-15 18:31:10
@Ziplin:这将是一个“catch”和“throw”场景。虽然无法从异常中恢复,但在顶层捕获它可让您记录信息(或类似信息),然后重新抛出它。 – 2010-06-15 18:38:45
所以在这种情况下可以捕获(例外e){//日志;扔e; }?我以为那总是一个不是没有的 – Dlongnecker 2010-06-15 20:33:07