(c#)记录最近遇到的一个问题和暂时解决方法:
问题描述:调试程序时,在程序主页面未做其他操作情况下点击程序关闭按钮,程序正常关闭。但是当我操作程序(新建)时,调用了ShellView的一个视图后,再点击程序关闭按钮,这时程序窗口执行了close关闭但是后台程序没有关闭,调试也一直处于挂起状态,导致我程序重载OnExit()中的函数未执行到,操作程序(新建)也没有发现使用多线程。
解决方法:通过委托,执行Application.Current.Shutdown(),关闭全部窗体后执行到了OnExit(),暂时解决问题,如果有更好的方式请指点。
代码:
//主程序委托函数
视图类._exitApp += new DelegateExitApp(ExitApp);
//主程序执行函数
public void ExitApp()
{
Current.Shutdown();
}
//我关闭的视图后台代码添加无参委托
public delegate void DelegateExitApp();
public event DelegateExitApp _exitApp;
public void ExitApp()
{
_exitApp() ;
}
//在关闭视图事件中执行ExitApp
private void Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
ExitApp();
}
//主程序委托函数
视图类._exitApp += new DelegateExitApp(ExitApp);
//主程序执行函数
public void ExitApp()
{
Current.Shutdown();
}
//我关闭的视图后台代码添加无参委托
public delegate void DelegateExitApp();
public event DelegateExitApp _exitApp;
public void ExitApp()
{
_exitApp() ;
}
//在关闭视图事件中执行ExitApp
private void Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
ExitApp();
}