Handle case where event source may remove event and any other added events don't fire #997
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.
Checking for any COM references when subscribing events to ensure our registered wrapper handler is still being held by an event source. If there isn't any, we create a new event wrapper delegate to hold onto the event being subscribed. This seems to fix #626 , but there is technically a scenario which this doesn't handle which is if the delegate is being removed as one is being added on another thread. Handling that scenario will require 1-1 mappings which we will need to consider if that becomes a concern.
Also making the check for IWeakReferenceSource in event source caching not throw an InvalidCastException by using an as operator.
Fixes #626