GitHub repository: GregPiWalker/Diversions
Primary language: C#
Description: A C# library that introduces an inversion of control with respect to .NET delegates, which allows standard looking .NET events to invoke event handlers in their own personalized threading context.  An example use-case enhances MVVM implementations by allowing view data bindings on properties of business objects to co-exist with other observers that are strictly NOT meant to be invoked on the UI thread.  Included is an implementation of ObservableCollection that safely and automatically marshals work to appropriate threads.  Diversions relieve the event-invoking actor of threading duties, and instead places the responsibility for defining threading behavior on each event handler, or on a global default setting.  This allows for the use of multiple threading contexts from a single invocation of a single event.