File tree Expand file tree Collapse file tree 2 files changed +11
-0
lines changed
src/FSharp.Control.TaskSeq Expand file tree Collapse file tree 2 files changed +11
-0
lines changed Original file line number Diff line number Diff line change @@ -672,6 +672,12 @@ module HighPriority =
672
672
sm.Data.current <- ValueNone
673
673
false )
674
674
675
+ // Binding to a cancellation token. This allows `do! someCancellationToken`
676
+ member inline _.Bind ( myToken : CancellationToken , continuation : ( unit -> ResumableTSC < 'T >)) : ResumableTSC < 'T > =
677
+ ResumableTSC< 'T>( fun sm ->
678
+ sm.Data.cancellationToken <- myToken
679
+ ( continuation ()) .Invoke(& sm))
680
+
675
681
[<AutoOpen>]
676
682
module TaskSeqBuilder =
677
683
/// Builds an asynchronous task sequence based on IAsyncEnumerable<'T> using computation expression syntax.
Original file line number Diff line number Diff line change @@ -67,6 +67,11 @@ module internal TaskSeqInternal =
67
67
KeyNotFoundException( " The predicate function or index did not satisfy any item in the async sequence." )
68
68
|> raise
69
69
70
+ let inline withCancellationToken ( cancellationToken : CancellationToken ) ( source : taskSeq < 'T >) = taskSeq {
71
+ do ! cancellationToken
72
+ yield ! source
73
+ }
74
+
70
75
let isEmpty ( source : taskSeq < _ >) =
71
76
checkNonNull ( nameof source) source
72
77
You can’t perform that action at this time.
0 commit comments