浏览代码

Fix InvalidOp when enumerating the SystemClockChanged hashset

akarnokd 6 年之前
父节点
当前提交
c889767247
共有 1 个文件被更改,包括 3 次插入1 次删除
  1. 3 1
      Rx.NET/Source/src/System.Reactive/Internal/SystemClock.cs

+ 3 - 1
Rx.NET/Source/src/System.Reactive/Internal/SystemClock.cs

@@ -59,7 +59,9 @@ namespace System.Reactive.PlatformServices
         {
             lock (SystemClockChanged)
             {
-                foreach (var entry in SystemClockChanged)
+                // create a defensive copy as the callbacks may change the hashset
+                var copySystemClockChanged = new List<WeakReference<LocalScheduler>>(SystemClockChanged);
+                foreach (var entry in copySystemClockChanged)
                 {
                     if (entry.TryGetTarget(out var scheduler))
                     {