Explorar o código

Short circuit on pre-cancelled token

Oren Novotny %!s(int64=9) %!d(string=hai) anos
pai
achega
f50dec7ceb
Modificáronse 1 ficheiros con 7 adicións e 0 borrados
  1. 7 0
      Ix.NET/Source/System.Interactive.Async/AsyncIterator.cs

+ 7 - 0
Ix.NET/Source/System.Interactive.Async/AsyncIterator.cs

@@ -84,6 +84,13 @@ namespace System.Linq
                     return false;
                 }
 
+                // Short circuit and don't even call MoveNexCore
+                if (cancellationToken.IsCancellationRequested)
+                {
+                    Dispose();
+                    return false;
+                }
+
                 // We keep these because cancelling any of these must trigger dispose of the iterator
                 moveNextRegistrations.Add(cancellationToken.Register(Dispose));