gpt4 book ai didi

c# - C#中的主线程锁定

转载 作者:行者123 更新时间:2023-11-30 20:07:24 25 4
gpt4 key购买 nike

我遇到了一个问题。我正在单击一个调用多个方法的按钮,尽管主线程已锁定,因此我创建了我的类的一个实例(即 Form1),例如Form1Object 然后按钮按如下方式调用方法:Form1Object.Check1 等等。

虽然线程仍然被锁定(即 GUI 在一段时间内变得无响应)是否有办法解决这个问题,任何示例将不胜感激。

有问题的代码如下:

private void StartChecks_Click(object sender, EventArgs e)
{
Form1 Form1Object = new Form1();
Form1Object.InitChecks();
}

public void InitChecks()
{
Check1();
Check2();
Check3();
Check4();
Check5();
Check6();
Check7();
}

最佳答案

创建新表单不会启动新线程。

您必须将这些 CheckN() 方法移动到 BackgroundWorker .

private void StartChecks_Click(object sender, EventArgs e)
{
Form1 Form1Object = new Form1();
var worker = new BackgroundWorker();
worker.DoWork += (s, arg) =>
{
Form1Object.InitChecks();
};

// add progress, completed events

worker.RunWorkerAsync();
}

但请注意,这要求检查是独立的,并且不与任何控件交互。

关于c# - C#中的主线程锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8544386/

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