如何在多线程中调用winform窗体控件(续)
之前《在如何在多线程中调用winform窗体控件》文章中,有关多线程调用的一段代码:
private Thread myThread;
private void Form1_Load(object sender, EventArgs e)
{
myThread = new Thread(new ThreadStart(RunsOnWorkerThread));
myThread.Start();
}
private void RunsOnWorkerThread()
{
MethodInvoker mi = new MethodInvoker(SetControlsProp);
BeginInvoke(mi);
}
private void SetControlsProp()
{
label1.Text = "myThread线程调用UI控件";
}
当时使用的声明委托的方式,后来自己看着实在觉得不爽,代码太复杂了,下面对这段代码优化了一下,在Load事件中的代码如下:
private void Form1_Load(object sender, EventArgs e)
{
Thread thread = new Thread(new ThreadStart(
() =>
{
this.BeginInvoke(new EventHandler(
(object o, System.EventArgs e1) => { textBox1.Text = "内容已设置"; }));
}));
thread.Start();
}
使用匿名委托的形势后主要是减少了代码的理解难度,也方便维护。
转载于:https://blog.51cto.com/realzjy/1154728