public void InnerComplete(InnerObserver <R> sender)
 {
     sender.Dispose();
     if (Volatile.Read(ref active) == sender)
     {
         sender.SetDone();
         Drain();
     }
 }
 public void InnerError(InnerObserver <R> sender, Exception error)
 {
     if (Interlocked.CompareExchange(ref this.error, error, null) == null)
     {
         sender.SetDone();
         Volatile.Write(ref done, true);
         Drain();
     }
 }
 public void InnerError(InnerObserver <R> sender, Exception error)
 {
     sender.Dispose();
     if (Volatile.Read(ref active) == sender)
     {
         if (delayErrors)
         {
             ExceptionHelper.AddException(ref errors, error);
             sender.SetDone();
             Drain();
         }
         else
         {
             if (Interlocked.CompareExchange(ref errors, error, null) == null)
             {
                 sender.SetDone();
                 Drain();
             }
         }
     }
 }
Пример #4
0
 void InnerError(InnerObserver sender, Exception error)
 {
     if (delayErrors)
     {
         ExceptionHelper.AddException(ref errors, error);
         sender.SetDone();
     }
     else
     {
         Interlocked.CompareExchange(ref errors, error, null);
     }
     Drain();
 }
Пример #5
0
 internal void InnerError(InnerObserver sender, Exception ex)
 {
     if (delayErrors)
     {
         if (ExceptionHelper.AddException(ref error, ex))
         {
             sender.SetDone();
             Drain();
         }
     }
     else
     {
         if (Interlocked.CompareExchange(ref error, ex, null) == null)
         {
             Drain();
         }
     }
 }
 public void InnerComplete(InnerObserver <R> sender)
 {
     sender.SetDone();
     Drain();
 }