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