diff --git a/ReactiveUI.Testing/TestUtils.cs b/ReactiveUI.Testing/TestUtils.cs index 501e20337a..5b10fb2431 100644 --- a/ReactiveUI.Testing/TestUtils.cs +++ b/ReactiveUI.Testing/TestUtils.cs @@ -12,7 +12,7 @@ namespace ReactiveUI.Testing { public static class TestUtils { - static readonly object schedGate = 42; + static readonly AutoResetEvent schedGate = new AutoResetEvent(true); static readonly object mbGate = 42; /// @@ -26,7 +26,7 @@ public static class TestUtils /// schedulers. public static IDisposable WithScheduler(IScheduler sched) { - Monitor.Enter(schedGate); + schedGate.WaitOne(); var prevDef = RxApp.MainThreadScheduler; var prevTask = RxApp.TaskpoolScheduler; @@ -36,7 +36,7 @@ public static IDisposable WithScheduler(IScheduler sched) return Disposable.Create(() => { RxApp.MainThreadScheduler = prevDef; RxApp.TaskpoolScheduler = prevTask; - Monitor.Exit(schedGate); + schedGate.Set(); }); } diff --git a/ReactiveUI.Tests/ReactiveUI.Tests_Net45.csproj b/ReactiveUI.Tests/ReactiveUI.Tests_Net45.csproj index 4fb68355ae..150500ff00 100644 --- a/ReactiveUI.Tests/ReactiveUI.Tests_Net45.csproj +++ b/ReactiveUI.Tests/ReactiveUI.Tests_Net45.csproj @@ -103,6 +103,7 @@ + diff --git a/ReactiveUI.Tests/TestUtilsTest.cs b/ReactiveUI.Tests/TestUtilsTest.cs new file mode 100644 index 0000000000..cb3fe4ddc9 --- /dev/null +++ b/ReactiveUI.Tests/TestUtilsTest.cs @@ -0,0 +1,16 @@ +using System.Threading.Tasks; +using Microsoft.Reactive.Testing; +using ReactiveUI.Testing; +using Xunit; + +namespace ReactiveUI.Tests +{ + public class TestUtilsTest + { + [Fact] + public async Task WithAsyncScheduler() + { + await new TestScheduler().WithAsync(_ => Task.Run(() => { })); + } + } +}