Fixing Memory leak in ThemeChangeEvent #446
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The ThemeChangedEvent was added in ClientAreaBorder and TitleBar but never removed. This caused that windows that uses this elements are never removed from memory what causes an memory leak.
Pull request type
Please check the type of change your PR introduces:
What is the current behavior?
There are a few ThemeChangedEvents added to the static ThemeChangedEvent Changed in Theme.cs .
When multiple windows are opended and closed this handler prevents the garbage Collector from removing the classes from memory. If the application is not closed, the memory consumption can grow constantly.
Issue Number: N/A
What is the new behavior?
The Handlers are removed from the static variable to allow the GC to collect the windows and clean up the memory.
Other information
Behaviour before my changes. I just opend and closed a few windows with a lot of elements on:
In DotMemory I could see that there a leaking Event Handlers:
I tracked them down and saw that there are coming form ThemeChangedEvent:
After implementing my changes the amount of Memory drasticly are reduced:
Also the leaking Handlers: