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);
 }