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