Reputation: 801
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?
Upvotes: 6
Views: 2357
Reputation: 4125
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.
Upvotes: 6
Reputation: 3631
In the App.xaml set:
ShutdownMode="OnMainWindowClose"
This must solve the problem. I recommend reading this question.
Upvotes: 4