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); }