Răsfoiți Sursa

Short circuit on pre-cancelled token

Oren Novotny 9 ani în urmă
părinte
comite
f50dec7ceb
1 a modificat fișierele cu 7 adăugiri și 0 ștergeri
  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));