Metoda Async.OnCancel (F#)

Generuje popisovač zrušení oboru, spolupráce pro použití v rámci asynchronní pracovního postupu.

Cesta k oboru názvů nebo modul: Microsoft.FSharp.Control

Sestavení: FSharp.Core (v FSharp.Core.dll)

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

// Usage:
Async.OnCancel (interruption)

Parametry

  • interruption
    Type: unit -> unit

    Funkce spuštěný podproces provádění zrušení.

Vrácená hodnota

Asynchronní výpočtu, který spustí přerušení, pokud je zrušena před vyřazována.

Poznámky

Například následující kód vygeneruje asynchronní výpočtu, pokud zrušení stane kdykoli během provádění asynchronního výpočtu v rozsahu holder, potom akci interruption spuštěn v podprocesu, který provádí zrušení.To lze zařídit výpočtu asynchronně oznámení, zrušení došlo, například nastavením příznaku nebo deregistering čekajících vstupně-výstupní akci.

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

Příklad

Následující příklad kódu ukazuje použití 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

Výsledek

  
  
  
  

Platformy

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

Informace o verzi

F# základní verze knihovny

Podporovány: 2.0, 4.0, přenosné

Viz také

Referenční dokumentace

Třída Control.Async (F#)

Obor názvů Microsoft.FSharp.Control (F#)