SingleThreadWorker C# single threaded SynchronizationContext and base class for providing async methods for single threaded objects