C#--BackgroundWorker使用心得
来源:互联网 发布:猫咪 知乎 编辑:程序博客网 时间:2024/05/24 02:06
BackgroundWorker类允许您在单独的专用线程上运行操作。 耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 似乎处于停止响应状态。如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用 BackgroundWorker类方便地解决问题(MSDN)。
public partial class Form1 : Form
{
BackgroundWorker bgw = new BackgroundWorker();
public Form1()
{
InitializeComponent();
bgw.WorkerReportsProgress = true;
bgw.WorkerSupportsCancellation = true;
bgw.DoWork+=new DoWorkEventHandler(bgw_DoWork);
bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgw_RunWorkerCompleted);
bgw.ProgressChanged += new ProgressChangedEventHandler(bgw_ProgressChanged);
}
private void bgw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
lbResult.Text = (e.ProgressPercentage.ToString() + "%" + e.UserState);
}
private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled == true)
{
lbResult.Text = "Canceled!";
}
else if (e.Error != null)
{
lbResult.Text = "Error: " + e.Error.Message;
}
else
{
lbResult.Text = "Done!";
}
}
private void bgw_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 1; i <= 12; i++)
{
if (bgw.CancellationPending == true)
{
e.Cancel = true;
break;
}
else
{
System.Threading.Thread.Sleep(500);
bgw.ReportProgress(i * 10);
}
}
}
private void btnStart_Click(object sender, EventArgs e)
{
if (bgw.IsBusy != true)
{
bgw.RunWorkerAsync();
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
if (bgw.WorkerSupportsCancellation == true)
{
bgw.CancelAsync();
}
}
- C#--BackgroundWorker使用心得
- backgroundWorker 使用心得
- backgroundworker类使用心得
- 关于异步线程BackgroundWorker类的使用心得
- 使用BackgroundWorker
- 使用BackgroundWorker
- BackgroundWorker使用
- [C#.NET] 如何 使用 BackgroundWorker 多執行緒 / 跨執行緒 存取UI
- 【WPF】【C#】使用BackgroundWorker实现多线程/异步操作
- (C#)多线程-BackgroundWorker组件
- (C#)多线程-BackgroundWorker组件
- UltraWinGrid使用心得(C#)
- UltraWinGrid使用心得(C#)
- backgroundWorker的使用。
- BackgroundWorker的使用
- backgroundWorker的使用
- BackGroundWorker控件的使用
- BackgroundWorker组件使用经验
- 正则之基本入门
- eclipse配置gradle
- -webkit-box 实现水平垂直居中
- 如何阅读
- NOIP提高组【JZOJ4790】选数问题
- C#--BackgroundWorker使用心得
- 一次工具类的改造以及思考
- solrCloud+tomcat+zookeeper配置----参考二
- nginx系列-00-编译安装-CentOS/RedHat
- Android沉浸式(侵入式)标题栏(状态栏)Status(三)
- JavaSE 集合框架(1)- 集合框架基础以及List集合
- 云客Drupal8源码分析之HttpKernel堆栈
- 【转】Darwin Streaming Server 核心代码分析
- Hibernate中CreateQuery和CreateSQLQuery的区别