zoukankan      html  css  js  c++  java
  • 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、做的效果如下

  • 相关阅读:
    Echrarts的基本API
    Echarts中Option属性设置
    大数据ETL处理时遇到的坑
    模块设计模式
    PAT (Advanced Level) Practice 代码
    递归中的 DFS 与 DP 比较
    CF 1557 D. Ezzat and Grid
    CF 1557 C. Moamen and XOR
    CF 1555 E. Boring Segments
    CF 1555 D. Say No to Palindromes
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/6694596.html
Copyright © 2011-2022 走看看