WPF多线程
来源:互联网 发布:2017免费下载农村淘宝 编辑:程序博客网 时间:2024/05/18 03:38
以前我们在winform中新建一个线程很简单:
private void btnsearch_Click(object sender, RoutedEventArgs e) { Thread t = new Thread(new ThreadStart(ThreadSearch)); t.Start(); t.Join(); }
需要多线程操作的方法:
private void ThreadSearch() { //代码 }
但我们在WPF中运行时直接报错:“由于其他线程拥有此对象,因此调用线程无法对其进行访问”
这是为什么呢?这里我们需要了解一下WPF的特性。
WPF有一个线程是用来生成WPF中所有元素(也就是程序里面包含的所有控件)的,这些元素占用了这个创建自己的线程(这个线程一般叫做UI线程)。因此,其他线程就不可以调用这些元素了,这才出现上图对象被占用的错误。
那怎么办呢?下面我们引入DispatcherObject类,此类中有一个成员Dispatcher用于返回管理该对象的调度程序。此时,我们可以调用Dispatcher.BeginInvoke()方法将一些代码递给调度线程,从而实现多线程。
private void btnsearch_Click(object sender, RoutedEventArgs e) { Thread t = new Thread(ThreadSearch); t.Start(); }
public void ThreadSearch() { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate() { //代码 } ); }
值得注意的是Dispatcher.BeginInvoke()方法有两个参数:第一个参数表示线程的优先级,一般使用DispatcherPriority.Normal表示立即执行。第二个参数是指向一个方法的委托,这个方法就是希望异步执行的代码。
0 0
- WPF 多线程
- wpf 多线程。
- WPF多线程
- WPF多线程
- WPF多线程
- wpf 多线程
- WPF多线程的实现
- WPF的多线程问题
- 多线程与WPF 4.5
- WPF多线程-1
- WPF 多线程编程
- WPF多线程演示
- WPF多线程简单实例
- WPF多线程UI更新
- wpf 多线程操作实例
- WPF 中 的多线程
- WPF多线程演示
- WPF 多线程设计
- 子线程中循环操作UI线程时导致子线程无法正常结束的问题总结
- 街道问题 (DP)
- Combination Sum II
- 【软考】(一)编译原理-文法
- ACM 迷宫问题 poj3984(c语言)
- WPF多线程
- iOS开发(10)UISegmentedControl
- NY86 找球号(一)
- C++ 析构函数 为何一般定义为虚函数
- MySQL游标循环
- Android fill_parent、wrap_content和match_parent的区别
- GUI(十)
- 将截断字符串或二进制数据。语句已终止……”问题的解决
- Gallery 实现图片定时无限循环切换