WPF中窗口控件的跨线程调用

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF中窗口控件的跨线程调用相关的知识,希望对你有一定的参考价值。

原文:WPF中窗口控件的跨线程调用

在WinForm中,我们要跨线程访问窗口控件,只需要设置属性CheckForIllegalCrossThreadCalls = false;即可。

在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(" ");
}

这里是要 输出一段字符串在TextBox中,只需要调用output方法就可以了。其它的处理同上!












以上是关于WPF中窗口控件的跨线程调用的主要内容,如果未能解决你的问题,请参考以下文章

wpf中 我新开一个线程添加控件到主窗体

VB跨线程调用WPF控件

wpf中 我新开一个线程添加控件到主窗体

将 WriteableBitmap 线程化到图像控件

C# 学习笔记 控件的跨线程访问

WPF 之 调用线程必须为 STA,因为许多 UI 组件都需要