zoukankan      html  css  js  c++  java
  • c#多线程,进度条,实时给前台发送数据

    ///做了一个wpf多线程,在实际场景中利用多线程保证程序不会卡死,性能上有所提高

    //启动线程处理
                    Thread thread1 = new Thread(UpdateBtn);
                    thread1.IsBackground = true;//设置为后台线程,当主线程结束后,后台线程自动退出,否则不会退出程序不能结束
                    thread1.Start();

    private void UpdateBtn()
            {
             
              //做时name为datatable循环取值给前台txt追加
                   for (int i = 0; i < name.Rows.Count; i++)
                   {
                       Action action1 = () =>
                   {
                       this.txt.AppendText(name.Rows[i][0].ToString() + "  ");
                       this.txt.AppendText(name.Rows[i][1].ToString() + "  ");
                       this.txt.AppendText(name.Rows[i][2].ToString() + "  ");
                       this.txt.AppendText(name.Rows[i][3].ToString() + "  ");
                       txt.Select(txt.Text.Length, 0);

                       Keyboard.Focus(txt);
                   };

                    //因为主线程在调用所以调用主线程上的委托
                       this.bfb.Dispatcher.Invoke(
                              new Action(
                                  delegate
                                  {
                                      var s = Math.Round((float)i / name.Rows.Count * 100, 2) + "%";
                                      this.bfb.Content = s;

                                  }));      

                       
                     
                       this.txt.Dispatcher.BeginInvoke(action1);
                       SetprogressBar(i);
                       // 如果不设置等待,会导致程序卡死
                       Thread.Sleep(50);
                   }
              
               this.progressBar1.Dispatcher.Invoke(
                               new Action(
                                   delegate
                                   {
                                       bol = true;
                                       System.Windows.MessageBox.Show("执行完毕");
                                       progressBar1.Visibility = Visibility.Hidden;   //隐藏
                                       bfb.Visibility = Visibility.Hidden;   //隐藏

                                   }));          
            }

    附带效果图:
                  

  • 相关阅读:
    AcWing 838. 堆排序
    AcWing 240. 食物链
    Sublime下载地址
    【转载】Java 8 Optional的正确姿势
    【SpringBoot】通过server.servlet.context-path设置应用的上下文路径
    【java/Lamda】List.stream().collect(Collectors.toMap(Emp::getId, a->a,(k1,k2)->k2))的意义
    Prometheus修改数据保留时间
    Atitit BLE 协议栈 艾提拉总结 目录 1. ——关于BLE的一些基本概念——
    Atitit 高并发设计实践 艾提拉著 目录 1. 并发的实现俩中模式 并发角度来看 基于事件触发vs线程的 1 2. 负载均衡 1 2.1. 云服务模型paas caas faas+http
    Atitit 锁的不同层级 app锁 vm锁 os锁 硬件锁 目录 1. 在硬件层面,CPU提供了原子操作、关中断、锁内存总线的机制 1 1.1. test and set指令 1 1.2. 锁内
  • 原文地址:https://www.cnblogs.com/ms1976/p/8618636.html
Copyright © 2011-2022 走看看