私はマルチスレッドが初めてです。私はwpfを使用してプロジェクトを行っています。
私のプロジェクトの簡単な紹介:
- 1 つのメインウィンドウ
- mainwindow の 1 つのメソッドは、window 2 と呼ばれる別のウィンドウを作成する別のスレッドを作成します。
- ウィンドウ2が表示されるたびに、メインウィンドウが中断されます(
join()
メインスレッドを中断する方法を使用しました)
問題は、ウィンドウ 2 を閉じるたびに、新しいスレッドが終了しないことです。そのため、メインスレッドは永久に中断されます。では、この問題を解決する方法。
次のコードは、MainWindow クラスでウィンドウ 2 の新しいスレッドを作成する場所です。
private void Button_Click_1(object sender, RoutedEventArgs e)
{
Thread addThread = new Thread(CreateCourseWindow);
addThread.SetApartmentState(ApartmentState.STA);
addThread.Start();
Thread.Sleep(TimeSpan.FromSeconds(1));
addThread.Join();
if (addcourse.Saved) CreateCourseButton(myCourses.Count(), myCourses.Last());
}
次のコードは、新しいスレッドのエントリ関数です。
private void CreateCourseWindow()
{
addcourse = new AddCourse();
addcourse.Activate();
addcourse.Show();
addcourse.Topmost = true;
System.Windows.Threading.Dispatcher.Run();
}
次のコードは、スレッドを終了したい場所です
private void Button_Click_2(object sender, RoutedEventArgs e)
{
this.Close();
}
AddCourse はウィンドウ 2 クラスです。