gpt4 book ai didi

GUI 环境中的 C# 多线程

转载 作者:行者123 更新时间:2023-12-02 00:31:22 26 4
gpt4 key购买 nike

为什么当我运行程序时,for 不并行运行在“一”代表结束之后,“二”代表开始提前致谢(我是 C# 菜鸟)

    private void button1_Click(object sender, EventArgs e)
{

Thread t = new Thread(new ThreadStart(Threadtest));
t.Start();

for(int i = 0 ;i<5;i++)
richTextBox1.Text = richTextBox1.Text + "one"+i+"\n";
}
private void Threadtest()
{
for (int i = 0; i < 5; i++)
{
MethodInvoker action = delegate { richTextBox1.Text = richTextBox1.Text + "two" + i + "\n"; };
richTextBox1.Invoke(action);
}

}

最佳答案

您需要进行 5 次以上的迭代。在你的“一”件事完成之前,线程甚至都没有被启动。

此外,由于您的“一个”代码从不休眠,因此它可能会在允许您通过 Invoke 编码的代码完全运行之前运行完成。 Invoke/BeginInvoke 导致代码在 UI 线程上运行 - 在 UI 线程没有其他工作要做之前不会发生。

DoEvents 将启用该功能。但它通常不应该用于多线程。它只是对多线程的说明有所帮助。

关于GUI 环境中的 C# 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9832001/

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