Pārlūkot izejas kodu

Improving TakeUntil cancellation.

Bart De Smet 8 gadi atpakaļ
vecāks
revīzija
984325f735

+ 5 - 4
AsyncRx.NET/System.Reactive.Async.Linq/System/Reactive/Linq/Operators/TakeUntil.cs

@@ -148,11 +148,12 @@ namespace System.Reactive.Linq
                         Synchronize(observer, gate),
                         await scheduler.ScheduleAsync(async ct =>
                         {
-                            ct.ThrowIfCancellationRequested();
-
-                            using (await gate.LockAsync().RendezVous(scheduler, ct))
+                            if (!ct.IsCancellationRequested)
                             {
-                                await observer.OnCompletedAsync().RendezVous(scheduler, ct);
+                                using (await gate.LockAsync().RendezVous(scheduler, ct))
+                                {
+                                    await observer.OnCompletedAsync().RendezVous(scheduler, ct);
+                                }
                             }
                         }, endTime).ConfigureAwait(false)
                     );