I have a simple question:
1- Create a new WPF project, there's startup window in it: MainWindow.xaml
.
2- In this project, create a new window Window1.xaml
.
3- Windows1
's loaded event, let it close.
4- Put an Open
button to MainWindow
. Implement it's click event.
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.Close();
}
private void button_Click(object sender, RoutedEventArgs e)
{
Window1 w = new Window1();
w.Show();
}
When I start this application, VS2015's UI became to the DEBUGING MODE
, then I click the close button on the right top corner of the Window, VS2015's UI back to normal mode.
Now, if I start application, click Open
button, then Window1
will show quickly and closed, but, if I click the close button on the right top corner of MainWindow
, things different: VS2015 will no go back to normal mode but stay in DEBUGING MODE
. so to me, that means something hang there and I don't know what is it.
Is there anyone know how to fix this problem?
This is not an answer, but just my findings of an actually interesting observation. I did your test (opening and closing the Window) a couple times and then dumped the list of WPF windows:
foreach (Window w in Application.Current.Windows)
Debug.WriteLine(w.GetType().FullName)
Resulting in:
WpfTest.MainWindow
Microsoft.VisualStudio.DesignTools.WpfTap.WpfVisualTreeService.Adorners.AdornerLayerWindow
Microsoft.VisualStudio.DesignTools.WpfTap.WpfVisualTreeService.Adorners.AdornerLayerWindow
Microsoft.VisualStudio.DesignTools.WpfTap.WpfVisualTreeService.Adorners.AdornerLayerWindow
WpfTap
is Visual Studio's WPF debugger, that helps debug the WPF content tree.
Now, if instead of using the Loaded
event, I used the ContentRendered
event to close the window, it doesn't happen, and things work as normal. It's also fine if I run the .exe without debugging.
So it seems like Visual Studio attaches the WPF debugger *after* a Window's Loaded
event, and if you close the window too early, it leaves the debugger component hanging around in memory.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With