///做了一个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;   //隐藏

                               }));          
        }

附带效果图:
              

c#多线程,进度条,实时给前台发送数据的更多相关文章

  1. android多线程进度条

    多线程实现更新android进度条. 实例教程,详细信息我已经注释   android多线程进度条   01package com.shougao.hello; 02 03import android ...

  2. websocket推送进度条百分比给前台

    说明:后台springboot项目 前台vue+element-UI 直接放代码: //别忘了开启springboot的websocket <dependency> <groupId ...

  3. 多线程/进度条应用(progressbar)

    使用Control Sets 下的 ProgressBar - Responsive Loop控件 ProcessBar 或者 CancelBar 都可以被设置为 invisible 代码如下(分享自 ...

  4. C#多线程进度条

    public class ZyjProgressBar : System.Windows.Forms.ProgressBar { //用于跨线程访问控件的委托 private delegate voi ...

  5. pyqt多线程进度条

    ui.py # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'ui.ui' # # Creat ...

  6. Java web实时进度条整个系统共用(如java上传、下载进度条、导入、导出excel进度条等)

    先上图: 文件上传的: 2017-05-04再次改进.在上传过程中用户可以按 Esc 来取消上传(取消当前上传,或者是全部上传)... 2019-03-26更新进度条显示体验 从服务器上压缩下载: 从 ...

  7. asp.net 后台多线程异步处理时的 进度条实现一(Ajax+Ashx实现以及封装成控件的实现)

    (更新:有的同学说源代码不想看,说明也不想看,只想要一个demo,这边提供一下:http://url.cn/LPT50k (密码:TPHU)) 工作好长时间了,这期间许多功能也写成了不少的控件来使用, ...

  8. C#调用耗时函数时显示进度条浅探

    最近在做一个VSS日志分析工具,使用C#进行开发,在完成了所有功能后,发现,从服务器下载VSS日志非常耗时,因为此,导致工具使用体验不好,所以,准备增加一个进度条.鉴于C#不经常使用,一下子搞个进度条 ...

  9. atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7

    atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7 1. 实现原理 1 2. 大的文件上传原理::使用applet 1 3. 新的bp 2 1. 性能提升---分割小文件上传 ...

随机推荐

  1. FusionWidgets Cylinder图

    1.数据源 Cylinder.xml: <?xml version="1.0" encoding="UTF-8"?> <chart palet ...

  2. 部署Java Web项目报错(一)

    今天,我在部署Java Web项目时,出现错误,并且在eclipse新建一个servers,却出现多个项目. 具体错误截图如下: 然后,我又将项目部署到JBoss服务器中,却还是运行不成功 22:12 ...

  3. 错误代码: 1111 Invalid use of group function

    1.错误描述 1 queries executed, 0 success, 1 errors, 0 warnings 查询:update t_user_info t inner join t_pro_ ...

  4. Java中用正则表达式找出数字

    Java中用正则表达式找出数字 1.题目    String str = "fjd789klsd908434jk#$$%%^38488545",从中找出78990843438488 ...

  5. freemarker.template.TemplateException:Macro has no such argument:params

    1.错误描述 freemarker.template.TemplateException:Macro mainSelect has no such argument:params 2.错误原因 在宏定 ...

  6. 使用AspNetPager控件分页

    页面后台写法 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindData(); } } pro ...

  7. eclipse和android studio的爱恨情仇

    Eclipse,以下简称ES(自己起的,不喜勿喷):Android studio,以下简称AS(都这么叫的啦)! 2000年,IBM怀胎24个月,终于产生了Eclipse,当时ES的诞生只是为了解决I ...

  8. Django学习-18-中间件

    为了验证中间件功能和函数执行过程,手动注册3个中间件到setting.py文件中 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddlewa ...

  9. Halcon异常(C++)不起作用

    现象 Halcon导出的C++程序,try catch不到异常.在Halcon下可以正常Catch到异常.  C++代码:try{   tuple_max(hv_Length, &hv_Max ...

  10. 对维数组排序 array_multisort()的应用

    PHP允许在多维数组上执行一些比较复杂的排序--例如,首先对一个嵌套数组使用一个普通的关键字进行排序,然后再根据另一个关键字进行排序.这与使用SQL的ORDER BY语句对多个字段进行排序非常相似.为 ...