gpt4 book ai didi

c# - 当多个线程试图同时在Winforms中使用Invoke更新表单控件时,会发生什么情况?

转载 作者:行者123 更新时间:2023-12-03 13:20:32 26 4
gpt4 key购买 nike

当多个线程试图使用Invoke调用表单方法同时在Winforms中更新表单控件时,会发生什么情况?

        static thCount = 0;
private void button1_Click(object sender, EventArgs e)
{
System.Threading.Thread t1 = new System.Threading.Thread(start);
System.Threading.Thread t2 = new System.Threading.Thread(start);
t1.Start();
t2.Start();
}
private void start()
{
System.Threading.Thread.Sleep(300);
Invoke(new MethodInvoker(guiUpdate));
}
private void guiUpdate()
{
this.label1.Text = "Updated.." + (thCount++);
this.label1.Update();
}
private void Form1_Load(object sender, EventArgs e)
{
this.label1.Text = System.Threading.Thread.CurrentThread.Name;
}

最佳答案

试试看! :)您会发现他们两个都无法从后台线程更新UI,而是需要使用Control.BeginInvoke来调用UI线程上的工作,在这种情况下,它们将按照调用BeginInvoke的顺序执行。

关于c# - 当多个线程试图同时在Winforms中使用Invoke更新表单控件时,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17335209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com