| 123456789101112131415161718192021222324252627282930313233343536373839404142 | 
							- // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
 
- using System.Reactive.Concurrency;
 
- namespace System.Reactive
 
- {
 
-     internal class AsyncLockObserver<T> : ObserverBase<T>
 
-     {
 
-         private readonly AsyncLock _gate;
 
-         private readonly IObserver<T> _observer;
 
-         public AsyncLockObserver(IObserver<T> observer, AsyncLock gate)
 
-         {
 
-             _gate = gate;
 
-             _observer = observer;
 
-         }
 
-         protected override void OnNextCore(T value)
 
-         {
 
-             _gate.Wait(() =>
 
-             {
 
-                 _observer.OnNext(value);
 
-             });
 
-         }
 
-         protected override void OnErrorCore(Exception exception)
 
-         {
 
-             _gate.Wait(() =>
 
-             {
 
-                 _observer.OnError(exception);
 
-             });
 
-         }
 
-         protected override void OnCompletedCore()
 
-         {
 
-             _gate.Wait(() =>
 
-             {
 
-                 _observer.OnCompleted();
 
-             });
 
-         }
 
-     }
 
- }
 
 
  |