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

时间:2023-03-09 03:33:14
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("\n");
}

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

如果认为此文对您有帮助,别忘了支持一下哦!

作者:齐飞
声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权,贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。