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 içinde)

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

// Usage:
Async.OnCancel (interruption)

Parametreler

  • interruption
    Tür: birim -> birim

    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.

Açıklamalar

Örneğin, aşağıdaki kod, zaman uyumsuz bir hesaplama oluşturur Burada, zaman uyumsuz hesaplaması kapsamında yürütülmesi sırasında istediğiniz zaman bir iptal olursa holder, sonra eylem interruption yürütüldüğünde iş parçacığında, işlemi uyguluyor iptali. Bu bir hesaplama zaman uyumsuz olarak bildirilmesini düzenlemek için bir iptal bildirimi, örneğin, bir bayrak ayarı 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 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2

Sürüm Bilgisi

F# Çalışma Zamanı

Desteklenir: 2.0, 4.0

Silverlight

Desteklenir: 3

Ayrıca bkz.

Başvuru

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

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

Değişiklik Geçmişi

Tarih

Geçmiş

Nedeni

Temmuz 2010

Eklenen kod örneği.

Bilgi geliştirme.