浏览代码

Using gate in SequenceEqual to synchronize outgoing notifications.

Bart De Smet 10 年之前
父节点
当前提交
9eb503a867
共有 1 个文件被更改,包括 10 次插入4 次删除
  1. 10 4
      Rx.NET/Source/System.Reactive.Linq/Reactive/Linq/Observable/SequenceEqual.cs

+ 10 - 4
Rx.NET/Source/System.Reactive.Linq/Reactive/Linq/Observable/SequenceEqual.cs

@@ -122,8 +122,11 @@ namespace System.Reactive.Linq.ObservableImpl
 
 
                 public void OnError(Exception error)
                 public void OnError(Exception error)
                 {
                 {
-                    _parent._observer.OnError(error);
-                    _parent.Dispose();
+                    lock (_parent._gate)
+                    {
+                        _parent._observer.OnError(error);
+                        _parent.Dispose();
+                    }
                 }
                 }
 
 
                 public void OnCompleted()
                 public void OnCompleted()
@@ -197,8 +200,11 @@ namespace System.Reactive.Linq.ObservableImpl
 
 
                 public void OnError(Exception error)
                 public void OnError(Exception error)
                 {
                 {
-                    _parent._observer.OnError(error);
-                    _parent.Dispose();
+                    lock (_parent._gate)
+                    {
+                        _parent._observer.OnError(error);
+                        _parent.Dispose();
+                    }
                 }
                 }
 
 
                 public void OnCompleted()
                 public void OnCompleted()