我是多线程的新手。我正在使用 wpf 做一个项目。
我的项目简介:
- 一个主窗口
- mainwindow 中的一个方法创建另一个线程,该线程创建另一个窗口,称为窗口 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 类。