WPF 关闭主窗口提示Application.Current为null处理

今天发现在任务栏右键关闭应用时,窗口关闭了,但是进程仍然存在。

经过定位发现然后视频在渲染时,使用了Application.Current.Dispatcher回到主线程的操作,但是主窗体Closing时,进程还没关闭Application.Current刚好被访问就会为null。

方案1:

一直轮询在执行的地方使用Application.Current.Dispatcher都加上?号,改成Application.Current?.Dispatcher。但是容易改漏。

方案2:

在主窗体MainWindow_Closing事件,使用Environment.Exit(-1)。但是关闭过程久,并且如果关闭前有其它地方注册了Closing事件做存储数据等操作,会造成这一步无法完成就强行关闭

        private void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
e.Cancel = true; Environment.Exit(
-1); }
posted @ 2023-07-06 16:04  log9527  阅读(44)  评论(0编辑  收藏  举报