WPF快速指导12: 线程处理模型
本文摘要:
1:理解与UI相关的多线程操作;
2:多个窗口多个线程
3:WPF中的多线程异常
1:理解与UI相关的多线程操作
首先来说说传统Winform。我们知道传统Winform新起工作线程,在工作线程中不能对界面元素进行操作。如下面的代码,运行会报错“线程间操作无效: 从不是创建控件“label1”的线程访问它。”:
Thread t = new Thread(delegate()
{
label1.Text = "temp";
});
t.Start();
要使上面的代码能成功运行,我们需要使用控件的Invoke 和 BeginInvoke和方法。这两个方法的意思是说,让赋值这个行为交给UI线程去处理。代码如下:
Thread t = new Thread(delegate()
{
label1.Invoke(new MethodInvoker(delegate()
{
label1.Text = "temp";
}));
});
t.Start();
而WPF的控件,我们找不到Invoke 和 BeginInvoke这两个方法了。因为WPF的UI线程都交给一个叫做调度器的类了。