使用主线程:当我的表单显示时,所有字段都是灰色的,表单的所有更新也都是灰色的。
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 方法,一切正常,除了我的主要运行仍然结束;在新线程完成之前终止应用程序。我花了一些时间试图弄清楚这一点,所以任何帮助都会非常感激。谢谢!