如何在WPF中退出应用程序时终止特定对象中的线程?

时间:2018-01-17 02:30:04

标签: c# wpf multithreading exit

我正在开发一些WPF程序并在'SyringeTricontinent.cs'类中创建一个名为'thCheckIdle'的线程,该线程在'MainWindow.xaml.cs'中生成。我希望在程序退出时杀死这个线程,所以我在Application类中添加了exit事件并在下面编写代码:

    private void Application_Exit(object sender, ExitEventArgs e)
    {
        if(((MainWindow)System.Windows.Application.Current.MainWindow).syringe.thCheckIdle!= null)
        {
            ((MainWindow)System.Windows.Application.Current.MainWindow).syringe.thCheckIdle.Abort();
        }    
    }

但它不起作用“在WHALE.exe”消息中发生了类型'System.NullReferenceException'的未处理异常,我发现即使执行显示MainWindow的程序,MainWindow的状态也为null。

退出主程序时如何杀死该线程?

1 个答案:

答案 0 :(得分:1)

您可以将其设为Background Thread,这样当主线程完成后,它就不会停止您的应用退出。 说啊 创建时thCheckIdle.IsBackground = true;

https://docs.microsoft.com/en-us/dotnet/api/system.threading.thread.isbackground?view=netframework-4.7.1