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