使用托管、事件实现线程通信

 

 

 

 

 

使用托管、事件实现线程通信,在这里例子中通过线程2的事件来更新UI线程的进度条,在实际应用中有防界面卡死的意义。

线程2的类中,我们定义一个事件RateChanged;

 

 

public delegate void ProgressRate(int rate);
public event ProgressRate RateChanged;

在窗体中定义一个进度条progressbar1

core c=new core ();//实现类
c.RateChanged += new core.ProgressRate(c_RateChanged);//添加事件
ThreadPool.QueueUserWorkItem(new WaitCallback(c.WriteRandomID),100000);//启动线程

 

代码
delegate void UpdateProgressBar(int rate);
void s_UpdateProgressBar(int rate)//实现实体
{
progressBar1.Value
= rate;
Console.WriteLine(rate);
}

void c_RateChanged(int rate)//事件
{
this.Invoke(new UpdateProgressBar(s_UpdateProgressBar), new object[] { rate });
}

 

 

 

posted @ 2010-07-19 11:31  植物  阅读(177)  评论(0编辑  收藏  举报