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 =
672672 sm.Data.current <- ValueNone
673673 false )
674674
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+
675681[<AutoOpen>]
676682module TaskSeqBuilder =
677683 /// 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 =
6767 KeyNotFoundException( " The predicate function or index did not satisfy any item in the async sequence." )
6868 |> raise
6969
70+ let inline withCancellationToken ( cancellationToken : CancellationToken ) ( source : taskSeq < 'T >) = taskSeq {
71+ do ! cancellationToken
72+ yield ! source
73+ }
74+
7075 let isEmpty ( source : taskSeq < _ >) =
7176 checkNonNull ( nameof source) source
7277
You can’t perform that action at this time.
0 commit comments