111,125
社区成员
发帖
与我相关
我的任务
分享
private void setTextSafeBtn_Click( object sender, EventArgs e)
{
this.demoThread =
new Thread(new ThreadStart(this.ThreadProcSafe));
this.demoThread.Start();
}
// 该方法在Worker线程中执行并且发出一个线程安全的调用
private void ThreadProcSafe()
{
this.SetText("This text was set safely.");
}
//如果被调用的线程和创建的TextBox控件不同,该方法就创建一个SetTextCallback,
// 并且用Invoke方法异步调用自己。
// 如果相同,则直接调用方法设置Text的属性。
private void SetText(string text)
{
// 获取的InvokeRequired将调用的线程ID和创建的线程ID向比较。
//如果两个线程ID不同,则返回true
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] ...{ text });
}
else
{
this.textBox1.Text = text;
}
}
protected override void mosue_down(....)
{
ThreadPool.QueueUserWorkItem(o =>
{
//你原来的代码
});
}