///做了一个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() + "  \r\n");
                   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;   //隐藏

                               }));          
        }

附带效果图:
              

最新文章

  1. 深入浅出Mybatis系列(十)---SQL执行流程分析(源码篇)
  2. hdu 1532(最大流)
  3. NEC学习 ---- 布局 -两列, 左侧定宽,右侧自适应
  4. iptraf:TCP/UDP网络监控工具
  5. c#中执行多条sql语句【ORA-00911: 无效字符】
  6. mencoder mencoder 安装使用及常用参数
  7. centos下cp -r 命令可拷贝文件夹
  8. Speeding up AngularJS apps with simple optimizations
  9. 【转】[Android编程心得] Camera(OpenCV)自动对焦和触摸对焦的实现
  10. POJ 2155 Matrix(二维树状数组)
  11. LeetCode &amp; 118-Pascal&#39;s Triangle-Easy
  12. My97DatePicker日期控件,开始时间不能大于结束时间,结束时间不能小于开始时间
  13. python之os
  14. Java 多线程 重入锁
  15. Python模块——subprocess
  16. 使用CefSharp跳转页面不弹出页面:
  17. android camera 摄像头预览画面变形
  18. December 01st 2016 Week 49th Thursday
  19. grub引导启动 win10 Ubantu 凤凰OS 三系统
  20. Sqlserver生成带数据的脚本

热门文章

  1. Activiti 实战篇 小试牛刀
  2. (二十三)mongodb中group的问题
  3. jquery四种监听事件的区别
  4. VmWareTool安装
  5. Qtree3题解(树链剖分(伪)+线段树+set)
  6. Topshelf 一个简化Windows服务开发的宿主服务框架
  7. Oracle-数据类型为date 日期查询技巧
  8. Java中常见数据结构Map之HashMap
  9. Vuex 教程案例:计数器以及列表展示
  10. EntityFramework Core 1.1+ Backing Fields(返回字段)