title: window closed event doesn't release memory and resource. How to solve the memory leak in WPF?
body: <p>Recently I noticed serious memory leak in my WPF project. If simplify the project, it has a login form and a main form. In main form there are 1 user control which is composed of about 30 user controls and 3 buttons, 1 user control which has 3 buttons and a Infragistics datagrid. I use background worker to query DB every 30 sec only for the datagrid.</p>
  
  <p>After I logout of the main form using main form.closed and re-launch the login window, I noticed that every time there is 6-7MB increase measured by ANTS memory profiler 7. Even though I have unregistered event handlers, set variables to null and called GC.Collect(), memeory leak is still the same. My questions are:
  1. Why close wpf window doesn't release the memory and resource? I can see many strings(most of them are from GUI) are still in memory after close window by ANTs profiler. 
  2. Do I need to unregister the events defined by resource event setter? Do I need to unregister the events declared in XAML?
  3. From <a href="https://stackoverflow.com/questions/6547723/wpf-memory-leak">WPF memory leak</a>, people said we should not use GC.Collect(), but I do see a little improvement. Shall we use it or not?</p>