gpt4 book ai didi

c# - 跨线程,访问非创建线程

转载 作者:太空狗 更新时间:2023-10-30 00:26:25 26 4
gpt4 key购买 nike

我正在尽最大努力学习跨/多线程,但我对这个概念很困惑。我做了一个示例应用程序,它应该通过线程在 label.text 上显示 i 。它不起作用,因为我正在尝试访问创建线程以外的线程,我已经研究了很多,但我仍然对调用、委派等感到困惑……这是我的代码:

private void s1_Click(object sender, EventArgs e)
{
Thread Thread1 = new Thread(new ThreadStart(Start1));
Thread1.Start();
}

public void Start1()
{
for (int i = 0; i < 1000; i++)
{
displaytext("Working.........", i);
Thread.Sleep(100);
}
}

public void displaytext(string thetext, int number)
{
t1.Text = thetext + " " + number;
}

什么是让它工作的好方法?任何帮助是极大的赞赏。我学习这个是出于对编程的热爱。

最佳答案

I am trying to access a thread other than it was created on

实际错误是在创建它的线程之外的线程上访问 Windows 窗体控件。

修复:使用Invoke

public void Start1()
{
for (int i = 0; i < 1000; i++)
{
t1.Invoke(() => displaytext("Working.........", i));
Thread.Sleep(100);
}
}

关于c# - 跨线程,访问非创建线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11203523/

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