文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>BackgroundWorker 使用方法

BackgroundWorker 使用方法

时间:2010-09-01  来源:iceknp

使用注意(来自MSDN):

您必须非常小心,确保在 DoWork 事件处理程序中不操作任何用户界面对象。而应该通过 ProgressChanged 和 RunWorkerCompleted 事件与用户界面进行通信。
BackgroundWorker 事件不跨 AppDomain 边界进行封送处理。请不要使用 BackgroundWorker 组件在多个 AppDomain 中执行多线程操作。

代码
private delegate void DoWorkerEventHandler(string strText);

private void btnThdWorker_Click(object sender, EventArgs e)
{
BackgroundWorker thdWorker
= new BackgroundWorker();
thdWorker.DoWork
+= new DoWorkEventHandler(thdWorker_DoWork);
thdWorker.RunWorkerCompleted
+=
new RunWorkerCompletedEventHandler(thdWorker_RunWorkerCompleted);
thdWorker.RunWorkerAsync();
}

//线程工作事件
public void thdWorker_DoWork(object sender, DoWorkEventArgs e)
{
Thread.Sleep(
4000);

//第一种
this.Invoke(new DoWorkerEventHandler(this.rtbSend.AppendText),
new object[] { "BackgroundWorker使用" });

//第二种
SetWorkerText("BackgroundWorker使用");
}

//线程工作完毕事件
public void thdWorker_RunWorkerCompleted(object sender,
RunWorkerCompletedEventArgs e)
{
rtbSend.AppendText(
"线程工作完毕事件封送回控件线程...");
}

public void SetWorkerText(string strText)
{
if (this.InvokeRequired)
{
DoWorkerEventHandler handler
= new DoWorkerEventHandler(SetWorkerText);
this.Invoke(handler, new object[] { strText });
}
else
{
lock (this.rtbSend)
{
rtbSend.AppendText(strText);
}
}
}

若有疑问或不正之处,欢迎提出指正和讨论。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载