WPF 多线程异常抛送到UI线程

无论是winform还是WPF,在.NET 2.0之后 只要是多线程中产生了异常都会导致程序强制结束。

那么我们一般的做法是将未知的多线程的异常抛送到UI线程去,然后进行处理..

 

正确的多线程中的异常抛送代码示例

  1. try
  2. {
  3. //一些有趣的代码..
  4. }
  5. catch(Exception ex)
  6. {
  7. Application.Current.Dispatcher.Invoke(DispatcherPriority.Send, (DispatcherOperationCallback)delegate(object arg)
  8.    {
  9.     throw ex;
  10.    }, null);
  11. }

这里的委托指定了委托的类型 DispatcherPriority.Send ,根据MSDN的解释是最高优先级,在异常发生后立刻处理。

如果你直接编写委托的话,也许你无法将异常抛送到UI线程,该程序就已经结束了。

posted on 2014-11-03 13:51  ExplorerMan  阅读(438)  评论(0)    收藏  举报

导航