浏览代码

Support CancellationToken on Delay.

Bart De Smet 8 年之前
父节点
当前提交
9d4d7fd429

+ 3 - 3
AsyncRx.NET/System.Reactive.Async/System/Reactive/Concurrency/AsyncSchedulerBase.cs

@@ -28,7 +28,7 @@ namespace System.Reactive.Concurrency
 
             return ScheduleAsyncCore(async ct =>
             {
-                await Delay(dueTimeRelative); // NB: Honor SynchronizationContext to stay on scheduler.
+                await Delay(dueTimeRelative, ct); // NB: Honor SynchronizationContext to stay on scheduler.
 
                 await action(ct);
             });
@@ -43,7 +43,7 @@ namespace System.Reactive.Concurrency
             {
                 var dueTimeRelative = Normalize(dueTime - Now); // TODO: Support clock drift and clock changes.
 
-                await Delay(dueTimeRelative); // NB: Honor SynchronizationContext to stay on scheduler.
+                await Delay(dueTimeRelative, ct); // NB: Honor SynchronizationContext to stay on scheduler.
 
                 await action(ct);
             });
@@ -60,7 +60,7 @@ namespace System.Reactive.Concurrency
 
         protected abstract Task ScheduleAsyncCore(Func<CancellationToken, Task> action, CancellationToken token);
 
-        protected abstract Task Delay(TimeSpan dueTime);
+        protected abstract Task Delay(TimeSpan dueTime, CancellationToken token);
 
         protected static TimeSpan Normalize(TimeSpan timeSpan) => timeSpan < TimeSpan.Zero ? TimeSpan.Zero : timeSpan;
 

+ 1 - 1
AsyncRx.NET/System.Reactive.Async/System/Reactive/Concurrency/ImmediateAsyncScheduler.cs

@@ -13,7 +13,7 @@ namespace System.Reactive.Concurrency
 
         private ImmediateAsyncScheduler() { }
 
-        protected override Task Delay(TimeSpan dueTime) => Task.Delay(dueTime);
+        protected override Task Delay(TimeSpan dueTime, CancellationToken token) => Task.Delay(dueTime);
 
         protected override Task ScheduleAsyncCore(Func<CancellationToken, Task> action, CancellationToken token) => action(token);
     }

+ 1 - 1
AsyncRx.NET/System.Reactive.Async/System/Reactive/Concurrency/TaskPoolAsyncScheduler.cs

@@ -30,7 +30,7 @@ namespace System.Reactive.Concurrency
             _factory = factory;
         }
 
-        protected override Task Delay(TimeSpan dueTime) => Task.Delay(dueTime);
+        protected override Task Delay(TimeSpan dueTime, CancellationToken token) => Task.Delay(dueTime, token);
 
         protected override Task ScheduleAsyncCore(Func<CancellationToken, Task> action, CancellationToken token)
         {