public void OnNext(T value)
 {
     if (OnNextAction != null && !IsDisposed)
     {
         if (MessageQueue.Enqueue(value))
         {
             Task.Run(() => {
                 T v;
                 while (MessageQueue.Dequeue(out v))
                 {
                     OnNextAction(v);
                 }
             });
         }
     }
 }
 public void OnNext(T value)
 {
     if (!IsDisposed && OnNextAction != null)
     {
         if (MessageQueue.Enqueue(value))
         {
             Task.Run((() => {
                 T v;
                 while (MessageQueue.Dequeue(out v))
                 {
                     OnNextAction(v);
                 }
             }));
         }
         else
         {
             this.LogWarning("Message was not enqueued !");
         }
     }
 }