2011-03-07 71 views
2

每当线程池线程发生异常时。我以为我会提出一个UI线程会响应的事件。但我需要传递异常消息。有人可以给我一些想法做到这一点?WPF将异常消息从ThreadPool线程传递到UI

+0

您是否尝试过DispatcherUnhandledException? – 2011-03-07 10:32:50

回答

0

如果您在线程中处理了异常,则可以在catch块中使用错误消息并将其发送到UI线程的调度程序。

0

你可以只是看在与事件的应用程序域未处理的异常:

Application.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException; 
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; 

但它可能会更好地包装在一个尝试捕捉线程和手动元帅的异常给UI线程。如果你有一个Dispatcher的引用,你可以使用它来将异常传递回UI线程。还有更简单的方法,如果你使用的是第三方物流,但这样做手工,你会怎么做:

​​

启动后台线程保存到调度员参考的地方,后台线程将能够访问之前。

private void FailedWorking(Exception ex) 
{ 
    _dispatcher.BeginInvoke(DispatcherPriority.Normal, (NotifyWorkerFailed)_notifyFailedMethod, ex); 
} 

然后,当你想提高对UI线程使用Dispatcher.BeginInvoke,要么把它传递一个委托方法将处理异常或者你可以只创建一个抛出

您可以将动作异常找到大量的其他示例在那里搜索Dispatcher