소스 검색

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))
                     {