メイン スレッドの使用: フォームが表示されると、すべてのフィールドがグレー表示され、フォームへの更新もすべてグレー表示されます。
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 メソッドは、2 番目のフォームをモーダル ウィンドウとして表示するようです。すべてのフィールドが表示されますが、スレッドの実行中はフィールドは更新されません。
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 Method を使用しない場合、メインの実行以外はすべて機能します。新しいスレッドが完了する前にアプリを終了します。私はこれを理解しようとするのに時間を費やしたので、どんな助けでも大歓迎です。ありがとう!