WPF中窗口控件的跨线程调用
2012-11-01 15:42
633 查看
在WinForm中,我们要跨线程访问窗口控件,只需要设置属性CheckForIllegalCrossThreadCalls = false;即可。
在WPF中要麻烦一下,同样的不允许跨线程访问,因为没有权限,访问了会抛异常;
没有CheckForIllegalCrossThreadCalls 属性,怎么办?
在WPF中的窗口控件都有一个Dispatcher属性,允许访问控件的线程;既然不允许直接访问,就告诉控件我们要干什么就好了。
方法如下:
这里是要 输出一段字符串在TextBox中,只需要调用output方法就可以了。其它的处理同上!
在WPF中要麻烦一下,同样的不允许跨线程访问,因为没有权限,访问了会抛异常;
没有CheckForIllegalCrossThreadCalls 属性,怎么办?
在WPF中的窗口控件都有一个Dispatcher属性,允许访问控件的线程;既然不允许直接访问,就告诉控件我们要干什么就好了。
方法如下:
private delegate void outputDelegate(string msg); private void output(string msg) { this.txtMessage.Dispatcher.Invoke(new outputDelegate(outputAction), msg); } private void outputAction(string msg) { this.txtMessage.AppendText(msg); this.txtMessage.AppendText("\n"); }
这里是要 输出一段字符串在TextBox中,只需要调用output方法就可以了。其它的处理同上!
相关文章推荐
- WPF中窗口控件的跨线程调用
- WPF中窗口控件的跨线程调用
- WPF中窗口控件的跨线程调用
- WPF中窗口控件的跨线程调用
- WPF/WinForm在线程中调用提示窗MessageBox阻塞窗口方法
- WinForm与WPF下跨线程调用控件
- c#在线程中调用窗口控件
- C# WinForm编程:跨线程调用UI窗口控件
- 直接调用带参数方法创建新线程及 wpf中跨线程访问控件
- c#在线程中调用窗口控件2(带参数)
- VC 如何在线程里调用主窗口的控件。
- 多线程委托之跨线程问题分析--在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke(解决方法已更新)
- wpf 根据当前控件,查找父窗口,调用父窗口的方法
- wpf中多窗口线程处理
- 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke
- 子线程调用窗体控件
- winform 利用 多线程 处理窗体假死,利用 Invoke BeginInvoke 处理子线程调用 UI 控件报错的问题
- 如何跨线程调用Windows窗体控件
- [转]QT中线程调用GUI主线程控件的问题
- C# 跨线程调用控件