【发布时间】:2018-08-17 17:44:50
【问题描述】:
我创建了一个小型 wpf 窗口应用程序。 MainWindow 有一个按钮,当按下该按钮时,会创建一个线程并开始执行。下面是我的 xaml 代码:
<Window x:Class="Tester.MainWindow"
...
Title="MainWindow" Height="150" Width="300" Closed="OnWindowclose">
<Grid>
<Button Content="Start" HorizontalAlignment="Left" Margin="42,47,0,0" VerticalAlignment="Top" Width="75" Click="Start_Click"/>
</Grid>
这是我的 .cs 代码的样子:
public partial class MainWindow : Window
{
private Thread t1;
public MainWindow()
{
InitializeComponent();
}
private void OnWindowclose(object sender, EventArgs e)
{
System.Windows.Application.Current.Shutdown();
}
private void Start_Click(object sender, RoutedEventArgs e)
{
move = true;
t1 = new System.Threading.Thread(KeepMoving);
t1.Start();
}
private void KeepMoving()
{
// my code
}
}
现在,我的问题是当我使用关闭按钮关闭MainWindow 时。我仍然可以看到应用程序没有停止。在阅读了一些 stackoverflow 帖子并创建了一个事件 OnWindowClose 并称为应用程序关闭后,我尝试了几件事。但这似乎没有按预期工作。
我不想调用 Thread.Abort(),因为它会引发异常并且论坛建议不要这样做。这个post 似乎与我想要实现的目标相似,但我仍然不知道如何使用它来停止关闭窗口中的线程。
我对线程相当陌生,所以我不确定我能做些什么来解决这个问题。任何帮助,将不胜感激。
谢谢。
【问题讨论】:
-
CancelationToken
标签: c# wpf multithreading window