Преглед изворни кода

Fix InvalidOp when enumerating the SystemClockChanged hashset

akarnokd пре 6 година
родитељ
комит
c4d8342cfc
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))
                     {