我有一个简单的问题:
Windows1的loaded事件,让它关闭:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.Close();
}
在MainWindow上放置一个“打开”按钮,实现它的click事件:
private void button_Click(object sender, RoutedEventArgs e)
{
Window1 w = new Window1();
w.Show();
}
当我启动该应用程序时,VS2015的UI变为“调试模式”,然后单击Window右上角的关闭按钮,VS2015的UI返回正常模式。
现在,如果我启动应用程序,请单击“打开”按钮,然后Window1将快速显示并关闭,但是,如果我单击MainWindow右上角的关闭按钮,则情况有所不同:VS2015将不会返回正常模式,而是保持不变在“调试模式”下。所以对我来说,那意味着有些东西挂在那里,我不知道那是什么。
有谁知道如何解决这个问题?
这不是答案,而只是我对一个有趣观察的发现。我做了几次测试(打开和关闭窗口),然后转储了WPF窗口列表:
foreach (Window w in Application.Current.Windows)
Debug.WriteLine(w.GetType().FullName)
Run Code Online (Sandbox Code Playgroud)
导致:
WpfTest.MainWindow
Microsoft.VisualStudio.DesignTools.WpfTap.WpfVisualTreeService.Adorners.AdornerLayerWindow
Microsoft.VisualStudio.DesignTools.WpfTap.WpfVisualTreeService.Adorners.AdornerLayerWindow
Microsoft.VisualStudio.DesignTools.WpfTap.WpfVisualTreeService.Adorners.AdornerLayerWindow
Run Code Online (Sandbox Code Playgroud)
WpfTap
是Visual Studio的WPF调试器,可帮助调试WPF内容树。
现在,如果不是使用Loaded
事件,而是使用ContentRendered
事件来关闭窗口,则不会发生,并且一切正常。如果我在不调试的情况下运行.exe也可以。
因此,似乎Visual Studio在窗口Loaded
事件之后*附加了WPF调试器,如果过早关闭窗口,则调试器组件会在内存中徘徊。
在App.xaml集中:
ShutdownMode="OnMainWindowClose"
Run Code Online (Sandbox Code Playgroud)
这必须解决问题。我建议阅读这个问题。
归档时间: |
|
查看次数: |
1142 次 |
最近记录: |