篆体字作品 | 篆体字知识 | 加入收藏 篆体字转换器软件可转换多种篆体字在线预览 网页版 V2.0
篆体字转换器

当前位置:篆体字网 > 知识库 >

methodinvoker

时间:2024-01-04 06:47:29 编辑:篆字君 来源:篆体字网

这是一部分重要的代码,用VS2005通过。

使用到两个控件,一个按钮button1,一个标签label1。

private void button1_Click(object sender, EventArgs e)

{

Thread thread=new Thread(new ThreadStart(myname));

thread.IsBackground=true;

thread.Start();

// 启动一个线程。

}

private void myname()

{

MethodInvoker mi= new MethodInvoker(hello);

//创建一个委托,hello是该委托所托管的代码,必须是声明为void的。

Invoke(mi);//同步执行委托。

//BeginInvoke(mi);异步执行委托。

}

private void hello()

{

label1.Text= "我是跨线程的!";

}

那里不正确,一定要指出,我可不想误导人,也不想被自己误导。

PS:写完后我发现http://tb.blog.csdn.net/TrackBack.aspx?PostId=715064早就有解释,比我的还详细,领教了。

故补充以下代码:

private Thread myThread;
private void Form1_Load(object sender, EventArgs e)
{
myThread=new Thread(new ThreadStart(RunsOnWorkerThread));
myThread.Start();
}
private void RunsOnWorkerThread()
{
//DoSomethingSlow();
string pList="myThread线程调用UI控件";
label1.BeginInvoke(new System.EventHandler(UpdateUI), pList);
}
//直接用System.EventHandler,没有必要自定义委托
private void UpdateUI(object o, System.EventArgs e)
{
//UI线程设置label1属性
label1.Text=o.ToString() + "成功!";
}

Copyright:2021-2023 篆体字转换器 www.dddtedu.com All rights reserved.