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

C# 学习 专栏收录该内容
17 篇文章 0 订阅

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



  • 0
    点赞
  • 3
    评论
  • 3
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 3 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

_借我你的一生_

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值