写这篇记录是因为在今天逛博客,搜索关于C#的资料,看到很多大神的神作,惭愧哦,自己写的都是写学习步骤,没啥技术含量,但是作为自己的学习笔记,我愿意这么写下去...加油!!!
在 何戈洲前辈 的作品中有关于C#--WPF的作品,我今天看了一些,很有用,这是他的C# -WPF篇的网站:http://www.cnblogs.com/hegezhou_hot/category/260429.html
大家可以去他那里学习,我只记录自己今天的学习:
我用我上次的 C#学习之二---创建简单的图形应用程序-WPF 来做实验,在里面加了一个Button,改名为UI;
如图:
其代码如下:
private void textUi_Click(object sender, RoutedEventArgs e)
{
Thread t = new Thread(delegate()
{
this.userName.Text = " 测试UI";
});
t.Start();
}
运行会出现如下错误:
WPF中的UI控件,如果我们探究本质,他们都是从DispatcherObject继承,所以都必须由UI线程进行调度和使用,如果我们在其他的后台线程中操作界面相关的元素时,就会出现如下的异常信息:(这是复制过来的)
我们更改程序如下:
private void textUi_Click(object sender, RoutedEventArgs e)
{
Thread t = new Thread(delegate()
{
//this.userName.Text = " 测试UI";
this.userName.Dispatcher.Invoke(new Action(delegate() { userName.Text = " 测试UI"; }));
});
t.Start();
}
记得在开头加上一句:
using System.Threading;
如下是运行结果,我们先点击UI,然后点击OK,结果如图:
我们需要知道,最终还是由UI线程进行执行即可,当我们在WPF中进行多线程编程时需要特别的注意。在后面的MVVM编程的过程中,我们队ViewModel中的绑定源对象进行修改时,也需要注意这个问题。(这是复制过来的)
在此感谢 何戈洲前辈 ,今天到此为止.
OVER!!!