黑马程序员技术交流社区
标题:
WPF中窗口控件的跨线程调用
[打印本页]
作者:
aa26963
时间:
2013-6-17 13:58
标题:
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方法就可以了。其它的处理同上!
作者:
许庭洲
时间:
2013-6-17 14:05
值得学习ing!
作者:
zhangcheng5468
时间:
2013-7-4 20:04
private void button3_Click(object sender, RoutedEventArgs e)
{
Thread thread = new Thread(output);
thread.IsBackground = true;
thread.Start("123");
}
public void output(string msg)
{
this.txt_num.Dispatcher.Invoke(new outputDelegate(outputAction), msg);
}
private void outputAction(string msg)
{
this.txt_num.AppendText(msg);
}
}
delegate void outputDelegate(string msg);
有错误???
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2