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线程,该程序就已经结束了。
WPF 多线程异常抛送到UI线程的更多相关文章
- WPF / Win Form:多线程去修改或访问UI线程数据的方法( winform 跨线程访问UI控件 )
		WPF:谈谈各种多线程去修改或访问UI线程数据的方法http://www.cnblogs.com/mgen/archive/2012/03/10/2389509.html 子线程非法访问UI线程的数据 ... 
- C# 多线程详解 Part.02(UI 线程和子线程的互动、ProgressBar 的异步调用)
		我们先来看一段运行时会抛出 InvalidOperationException 异常的代码段: private void btnThreadA_Click(object sender, ... 
- WPF 非UI线程更新UI界面的各种方法小结
		转载:https://www.cnblogs.com/bdbw2012/articles/3777594.html 我们知道只有UI线程才能更新UI界面,其他线程访问UI控件被认为是非法的.但是我们在 ... 
- WPF 多线程 UI:设计一个异步加载 UI 的容器
		对于 WPF 程序,如果你有某一个 UI 控件非常复杂,很有可能会卡住主 UI,给用户软件很卡的感受.但如果此时能有一个加载动画,那么就不会感受到那么卡顿了.UI 的卡住不同于 IO 操作或者密集的 ... 
- Winform非UI线程更新UI界面的各种方法小结
		我们知道只有UI线程才能更新UI界面,其他线程访问UI控件被认为是非法的.但是我们在进行异步操作时,经常需要将异步执行的进度报告给用户,让用户知道任务的进度,不至于让用户误认为程序“死掉了”,特别是对 ... 
- 非UI线程更新UI界面的各种方法小结
		转载:https://www.cnblogs.com/xiashengwang/archive/2012/08/18/2645541.html 我们知道只有UI线程才能更新UI界面,其他线程访问UI控 ... 
- WPF里面多线程访问UI线程、主线程的控件
		如果出现以下错误:调用线程无法访问此对象,因为另一个线程拥有该对象. 你就碰到多线程访问UI线程.主线程的控件的问题了. 先占位. 
- c#多线程(UI线程,控件显示更新) Invoke和BeginInvoke 区别
		如果只是直接使用子线程访问UI控件,直接看内容三,如果想深入了解从内容一看起. 一.Control.Invoke和BeginInvoke方法的区别 先上总结: Control.Invoke 方法 (D ... 
- [转] c#多线程(UI线程,控件显示更新) Invoke和BeginInvoke 区别
		如果只是直接使用子线程访问UI控件,直接看内容三,如果想深入了解从内容一看起. 一.Control.Invoke和BeginInvoke方法的区别 先上总结: Control.Invoke 方法 (D ... 
随机推荐
- Lua脚本语言入门学习其应用教程
			Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用.不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,Ini等文件格式,并且更 ... 
- 雷林鹏分享:Ruby 安装 - Unix
			Ruby 安装 - Unix 下面列出了在 Unix 机器上安装 Ruby 的步骤. 注意:在安装之前,请确保您有 root 权限. 下载最新版的 Ruby 压缩文件.请点击这里下载. 下载 Ruby ... 
- 如何给wpf的按钮添加背景图片
			1:简单实用 <Button Height="143" HorizontalAlignment="Left" Margin="30,34,0,0 ... 
- 『Numpy』高级函数_np.nditer()&ufunc运算
			1.np.nditer():numpy迭代器 默认情况下,nditer将视待迭代遍历的数组为只读对象(read-only),为了在遍历数组的同时,实现对数组元素值得修改,必须指定op_flags=[' ... 
- C语言-简单选择排序与直接插入排序的实现
			/* Name: selectSort and insertSort Copyright: nyist Author: 润青 Date: 01/10/18 19:30 Description: 实现了 ... 
- navicat安装步骤
			Navicat安装 
- PHP:第一章——PHP中的数组运算符和类运算符
			数组运算符: $a+$b;//$a和$b的联合 $a == $b;//比较$a与$b的值相同为true; $a === $b;//如果$a与$b的值与顺讯完全相同为true; $a !=$b;//如果 ... 
- Awk 从入门到放弃(5)– Awk模式(Pattern)之一
			转:http://www.zsythink.net/archives/1426 
- stringBuild置空方法
			参看连接:http://blog.csdn.net/roserose0002/article/details/6972391 
- 用正则表达式匹配用rdf3x处理过后的TTL格式文档
			1.比如下面这个用rdf3x处理过后的TTL文档片段: 注意缩进的是两个空格 <http://rdf.ebi.ac.uk/resource/chembl/target/CHEMBL2363853 ... 
