using System; using System.Windows.Threading; namespace Jellyfish.Library { public static class DispatcherExtensions { public static void Post(this Dispatcher dispatcher, Action action) { if (dispatcher == null) { throw new ArgumentNullException("dispatcher"); } if (action == null) { throw new ArgumentNullException("action"); } new DispatcherSynchronizationContext(dispatcher).Post(state => action(), null); } public static void Send(this Dispatcher dispatcher, Action action) { if (dispatcher == null) { throw new ArgumentNullException("dispatcher"); } if (action == null) { throw new ArgumentNullException("action"); } new DispatcherSynchronizationContext(dispatcher).Send(state => action(), null); } } }