C#学习之五---WPF-UI线程

写这篇记录是因为在今天逛博客,搜索关于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!!!



你可能感兴趣的:(C#,学习,2010,c#,C#,thread,Thread)