瀏覽代碼

No false positives for the Virtual_ThreadSafety test.

Peter Wehrfritz 7 年之前
父節點
當前提交
4496c28da0
共有 1 個文件被更改,包括 9 次插入4 次删除
  1. 9 4
      Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/VirtualSchedulerTest.cs

+ 9 - 4
Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/VirtualSchedulerTest.cs

@@ -136,7 +136,7 @@ namespace ReactiveTests.Tests
             {
                 var scheduler = new TestScheduler();
                 var seq = Observable.Never<string>();
-                var d = default(IDisposable);
+                var disposable = default(IDisposable);
 
                 var sync = 2;
 
@@ -152,7 +152,7 @@ namespace ReactiveTests.Tests
 
                     Task.Delay(10).Wait();
 
-                    d = seq.Timeout(TimeSpan.FromSeconds(5), scheduler).Subscribe(s => { });
+                    disposable = seq.Timeout(TimeSpan.FromSeconds(5), scheduler).Subscribe(s => { });
                 });
 
                 var watch = scheduler.StartStopwatch();
@@ -166,12 +166,17 @@ namespace ReactiveTests.Tests
                         }
                     }
 
+                    var d = default(IDisposable);
                     while (watch.Elapsed < TimeSpan.FromSeconds(11))
                     {
+                        d = Volatile.Read(ref disposable);
                         scheduler.AdvanceBy(50);
                     }
 
-                    throw new Exception("Should have thrown!");
+                    if (d != null)
+                    {
+                        throw new Exception("Should have thrown!");
+                    }
                 }
                 catch (TimeoutException)
                 {
@@ -180,7 +185,7 @@ namespace ReactiveTests.Tests
                 {
                     Assert.True(false, string.Format("Virtual time {0}, exception {1}", watch.Elapsed, ex));
                 }
-                d?.Dispose();
+                disposable?.Dispose();
             }
         }
     }