C# 我的第二个来自在从主线程调用时是灰色的

本文关键字:调用 灰色 线程 第二个 我的 自在 | 更新日期: 2023-09-27 18:33:17

使用主线程:显示我的表单时,所有字段都显示为灰色,表单的所有更新也显示为灰色。

StopServicesForm stopservices = new StopServicesForm(
cicsRegionSelected, serverSelected);
stopservices.Show();
stopservices.stopAppServerService();
*On page load*
private void StopServicesForm_Load(object sender, EventArgs e)
{
   Region_label.Visible = true;
   displayregion_label.Visible = true;
   StoppingServicelabel1.Visible = true;
   ServiceNamelabel.Visible = true;
   Service_progressBar1.Visible = true;
}

使用新线程:Join 方法似乎将第二个窗体显示为模式窗口。将显示所有字段,但在线程运行时不会更新这些字段。

StopServicesForm stopservices = new StopServicesForm(
cicsRegionSelected, serverSelected);
stopservices.Sendstopserviceupdate = new
StopservicethreadCompleted(StopServicethreadCompleteCallback);
Thread thread = new Thread(stopservices.stopAppServerService);
stopservices.Show();
thread.Start();
thread.Join();  

我正在使用以下委托实例来更新表单,因为我使用的是新线程。

SetTextCallback setSet_tbServiceNameText = new SetTextCallback(results.Set_tbServiceName);            
UpdateProgressDelegate updateprog = new UpdateProgressDelegate(UpdateprogressBar);
UpdateServicetoStopLabel updateserviceName = new UpdateServicetoStopLabel(UpdateServicetostopLabel);

如果我不使用 Join 方法,除了我的主运行仍然结束之外,一切都可以正常工作;这会在新线程完成之前终止应用程序。我花了一些时间试图弄清楚这一点,所以任何帮助都会得到很多。谢谢!

C# 我的第二个来自在从主线程调用时是灰色的

应使用 ShowDialog 将窗体显示为模式对话框,而不是通过Join调用阻止 UI 线程。