• WPF开发中的多线程的问题


    今天帮助同事做了一个WPF版的多线程demo,分享给大家。

    要实现的问题就是非主线程thread1 去后台不停的取新数据,当有新数据的时候就会展示到前台。

    我给他做的demo实现一个按秒的计数器,随着时间然后每秒数据加1,

    这个demo涉及到的点有 多线程,垮线程更改控件的值Dispatcher的使用

    1、我们新建项目 WPF项目,demo

    2、在设计器上添加一个控件

     <Label Content="Label" Name="m1" HorizontalAlignment="Left" Margin="197,57,0,0" VerticalAlignment="Top" FontSize="40"/>

    3、新建业务类

    public class Model
        {
            public String Data;
        }
        public delegate void Exe(Model a);
        public class WillDo
        {
            public event Exe Output;
            public void 后台数据方法()
            {
                int i = 1;
                while (true)
                {
                    Output(new Model() { Data = i.ToString() });
                    i++;
                    Thread.Sleep(300);
                }
            }
        }

    4、在设计器的后台代码上加入下面的代码

     public partial class MainWindow : Window
        {
            WillDo c = new WillDo();
            public MainWindow()
            {
                InitializeComponent();
                c.Output += C_Output;
            }
    
            private void C_Output(Model a)
            {
                this.Dispatcher.Invoke(new Action(() =>
                    {
                        m1.Content = a.Data.ToString();
                    }));
            }
    
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                var th1 = new Thread(() =>
                  {
                      c.后台数据方法();
                  });
    
                th1.IsBackground = true;
                th1.Start();
            }
        }

    5、做的效果如下

  • 相关阅读:
    inline-block图文布局
    display: inline-block换行问题
    前端Fiddler高级调试技巧
    开发人员linux命令总结
    随笔-系统安装
    Fiddler高阶技能-项目文件代理
    译:如何使用时间轴工具
    jquery 选择器之children与find
    ASP.NET 大文件下载的实现思路及代码
    Git 使用指南
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/6694596.html
Copyright © 2020-2023  润新知