Udostępnij za pośrednictwem


Async.OnCancel — Metoda (F#)

Generuje obsługi anulowania w zakresie, wspólnych dla w ramach asynchronicznego przepływu pracy.

Ścieżka obszaru nazw/modułu: Microsoft.FSharp.Control

Zestaw: FSharp.Core (w FSharp.Core.dll)

// Signature:
static member OnCancel : (unit -> unit) -> Async<IDisposable>

// Usage:
Async.OnCancel (interruption)

Parametry

  • interruption
    Type: unit -> unit

    Funkcja, która jest wykonywana w wątku wykonywania anulowania.

Wartość zwracana

Asynchroniczne obliczeń, powodujące przerwanie, jeśli zostanie anulowana przed usuwany.

Uwagi

Na przykład, poniższy kod generuje asynchronicznego obliczeń w przypadku gdy anulowanie sytuacji w czasie wykonania asynchronicznego obliczeń w zakresie holder, następnie akcji interruption jest wykonywane w wątku, który wykonuje anulowania.To można zorganizować obliczeń asynchronicznie powiadamiane o anulowaniu wystąpiła, na przykład przez ustawienie flagi lub wyrejestrowywanie oczekujące działania We/Wy.

async { use! holder = Async.OnCancel interruption ... }

Przykład

Poniższy kod demonstruje użycie Async.OnCancel.

// This is a simulated cancellable computation. It checks the token source 
// to see whether the cancel signal was received. 
let computation (tokenSource:System.Threading.CancellationTokenSource) =
    async {
        use! cancelHandler = Async.OnCancel(fun () -> printfn "Canceling operation.")
        // Async.Sleep checks for cancellation at the end of the sleep interval, 
        // so loop over many short sleep intervals instead of sleeping 
        // for a long time. 
        while true do 
            do! Async.Sleep(100)
    }

let tokenSource1 = new System.Threading.CancellationTokenSource()
let tokenSource2 = new System.Threading.CancellationTokenSource()

Async.Start(computation tokenSource1, tokenSource1.Token)
Async.Start(computation tokenSource2, tokenSource2.Token)
printfn "Started computations."
System.Threading.Thread.Sleep(1000)
printfn "Sending cancellation signal."
tokenSource1.Cancel()
tokenSource2.Cancel()

// Wait for user input to prevent application termination.
System.Console.ReadLine() |> ignore

Dane wyjściowe

  
  
  
  

Platformy

Windows 8, Windows 7, Windows Server 2012 Windows Server 2008 R2

Informacje o wersji

F# Core wersji biblioteki

Obsługiwane: 2.0, 4.0, przenośne

Zobacz też

Informacje

Control.Async — Klasa (F#)

Microsoft.FSharp.Control — Przestrzeń nazw (F#)