Aracılığıyla paylaş


Async.OnCancel Yöntemi (F#)

Zaman uyumsuz bir iş akışı içinde kullanmak için kapsamlı, ortak iptal işleyicisi oluşturur.

Ad alanı/modül yolu: Microsoft.FSharp.Control

Derleme: FSharp.Core (FSharp.Core.dll),

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

// Usage:
Async.OnCancel (interruption)

Parametreler

  • interruption
    Type: unit -> unit

    Iptali gerçekleştiren iş parçacığında yürütülen işlev.

Dönüş Değeri

Bırakılmadan önce iptal edilirse özel durumu tetikleyecek bir zaman uyumsuz hesaplama.

Notlar

Örneğin, aşağıdaki kod bir zaman uyumsuz hesaplaması oluşturur nerede, zaman uyumsuz hesaplaması kapsamında yürütülmesi sırasında istediğiniz zaman bir iptal olursa holder, daha sonra eylemi interruption iptal işlemini gerçekleştiren iş parçacığında yürütülür. Bu zaman uyumsuz olarak bildirilmesini hesaplaması için düzenlemek için bir iptal bildirimi, örneğin, bir bayrağı ayarlayarak veya bekleyen bir g/Ç eylem kaydı siliniyor oluştuğunu kullanılabilir.

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

Örnek

Aşağıdaki kod örneği kullanımını gösterir 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

Çıktı

  
  
  
  

Platformlar

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

Sürüm Bilgisi

F# Çekirdek Kitaplığı sürümleri

Desteklenen: 2.0, 4.0, Portable

Ayrıca bkz.

Başvuru

Control.Async Sınıfı (F#)

Microsoft.FSharp.Control İsim Uzayı (F#)