C#后台线程及UI线程交互可以采用BackgroundWorker
来源:互联网 发布:saas企业软件市场规模 编辑:程序博客网 时间:2024/05/21 19:39
BackgroundWorker是·net里用来执行多线程任务的控件,它允许编程者在一个单独的线程上执行一些操作。耗时的操作(如下载和数据库事务)
在长时间运行时可能会导致用户界面 (UI) 始终处于停止响应状态。如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,
则可以使用BackgroundWorker类方便地解决问题。
在长时间运行时可能会导致用户界面 (UI) 始终处于停止响应状态。如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,
则可以使用BackgroundWorker类方便地解决问题。
BackgroundWorker支持后台与UI线程的交互。使用ProgressChanged配合worker.ReportProgress(100)汇报进度;
using (BackgroundWorker bw = new BackgroundWorker()) { bw.ProgressChanged += new ProgressChangedEventHandler(Bw_ProgressChanged);//创建变更事件 bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Bw_RunWorkerCompleted);//创建完成事件 bw.WorkerReportsProgress = true;//打开进度报告更新 bw.DoWork += new DoWorkEventHandler(bw_DoWork);//委托事件 bw.RunWorkerAsync(fileinfo1.FullName);//开始执行 }
在后台中添加ReportProgress()来激活Bw_ProgressChanged()与UI线程做交互。
public async void EditXlsx(DataSet data, BackgroundWorker worker){worker.ReportProgress((i * 100 / data.Tables[0].Rows.Count));}
void bw_DoWork(object sender, DoWorkEventArgs e) { EditXlsx(ToDataTable(e.Argument.ToString()), (BackgroundWorker)sender); }
private void Bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { //System.Diagnostics.Process.Start("explorer.exe", FileName + "Result" + "\\"); this.probar.Value = 100; MessageBox.Show("转制完成"); } private void Bw_ProgressChanged(object sender, ProgressChangedEventArgs e) { probar.Value = e.ProgressPercentage; }
阅读全文
0 0
- C#后台线程及UI线程交互可以采用BackgroundWorker
- C#后台线程和UI的交互
- C#的BackgroundWorker--启动后台线程
- 后台线程与UI线程的交互
- C#中让副线程跟主线程交互的类-BackgroundWorker
- 详解c#中启动后台线程函数BackgroundWorker();
- android120--后台线程与UI交互
- Android中后台线程如何与UI线程交互
- Android中后台线程如何与UI线程交互
- UI线程与后台线程交互设计5种方法
- UI线程与后台线程交互设计5种方法
- Android后台线程和UI线程的5种交互
- Android中UI线程与后台线程交互设计
- Android中UI线程与后台线程交互方法
- Android中后台线程如何与UI线程交互
- Android中UI线程与后台线程交互设计方法
- Android后台线程和UI线程的交互
- AsyncTask - 基本原理 后台线程和UI线程的交互
- 《设计模式之禅》学习-----单例模式
- jQuery操作单选框、多选框是否选中问题
- 11 个简单的 Java 性能调优技巧
- Laravel多层次跳转问题
- postman中 form-data、x-www-form-urlencoded、raw、binary的区别
- C#后台线程及UI线程交互可以采用BackgroundWorker
- SQL笔记(三)
- px4源码学习五--固定翼位置控制模块
- 基于Unity3D的打开Windows软键盘的功能的实现
- Android自带计时器类CountDownTimer
- maven 连接sqlserver
- C语言 内存动态管理函数
- jquery-confirm插件使用
- xmpp介绍