gpt4 book ai didi

c# - 在单独的线程中显示主窗体上的另一个窗体

转载 作者:行者123 更新时间:2023-12-03 12:49:16 27 4
gpt4 key购买 nike

我试图使用以下代码在按钮单击时使用后台工作线程在单独的线程中显示主窗体上的另一个窗体:

    private void simpleButton1_Click(object sender, EventArgs e)
{
//this.Opacity = 50.5;
bw.RunWorkerAsync();
GetData();
bw.CancelAsync();

}

private void GetData()
{
for (int i = 0; i < 500000; i++)
{
datatable.Rows.Add(new object[] { "raj", "raj", "raj", i });
}
}

void bw_DoWork(object sender,DoWorkEventArgs e)
{

XtraForm1 frm = new XtraForm1();
while (!bw.CancellationPending)
{
frm.ShowDialog();
frm.BringToFront();
continue;
}
e.Cancel = true;
}

但问题是,当我单击主窗体时,在单独线程中运行的另一个窗体会被隐藏。如何使其可见,直到主线程完成执行,然后很好地处理它?<​​/p>

最佳答案

简单的答案是:你不知道。 UI 有一个线程来执行所有可见的用户交互,并且 UI 的工作应该是在将控制权交给您的工作人员之前向您的用户显示一个漂亮的“正在工作...”窗口。一旦工作人员完成工作,窗口就可以关闭。

你的“主”(UI)线程永远不应该“忙”。这会卡住你的 window 。将所有工作加载到后台任务,并让主线程闲置等待工作人员完成。您的工作线程可能会忙于无限循环,但您的 UI 仍会响应。即使回复只是“仍然有效,抱歉”。

关于c# - 在单独的线程中显示主窗体上的另一个窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19174044/

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