WPF 多线程异常抛送到UI线程
无论是winform还是WPF,在.NET 2.0之后 只要是多线程中产生了异常都会导致程序强制结束。
那么我们一般的做法是将未知的多线程的异常抛送到UI线程去,然后进行处理..
正确的多线程中的异常抛送代码示例:
- try
- {
- //一些有趣的代码..
- }
- catch(Exception ex)
- {
- Application.Current.Dispatcher.Invoke(DispatcherPriority.Send, (DispatcherOperationCallback)delegate(object arg)
- {
- throw ex;
- }, null);
- }
这里的委托指定了委托的类型 DispatcherPriority.Send ,根据MSDN的解释是最高优先级,在异常发生后立刻处理。
如果你直接编写委托的话,也许你无法将异常抛送到UI线程,该程序就已经结束了。
posted on 2014-11-03 13:51 ExplorerMan 阅读(438) 评论(0) 收藏 举报