public static void AddTableListenerOnSynchronizationContext(this ITable table, SynchronizationContext context, Action <ITable, string, object, NotifyFlags> callback, NotifyFlags flags) { if (callback == null) { throw new ArgumentNullException(nameof(callback)); } table.AddTableListenerEx((tbl, name, value, _flags) => { if (context != null) { context.Post(state => callback(tbl, name, value, _flags), null); } else { ThreadPool.QueueUserWorkItem(state => callback(tbl, name, value, _flags), null); } }, flags); }