Aracılığıyla paylaş


Async.StartWithContinuations<'T> Yöntemi (F#)

Geçerli işletim sistemi iş parçacığı üzerinde hemen başlayarak zaman uyumsuz bir hesaplama çalıştırır. İşlem tamamlandığında üç devamlılıktan birini çağırın.

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

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

// Signature:
static member StartWithContinuations : Async<'T> * ('T -> unit) * (exn -> unit) * (OperationCanceledException -> unit) * ?CancellationToken -> unit

// Usage:
Async.StartWithContinuations (computation, continuation, exceptionContinuation, cancellationContinuation)
Async.StartWithContinuations (computation, continuation, exceptionContinuation, cancellationContinuation, cancellationToken = cancellationToken)

Parametreler

  • computation
    Türü: zaman uyumsuz<'T>

    Yürütülecek zaman uyumsuz hesaplama.

  • continuation
    Type: 'T -> unit

    Başarı durumunda çağırılacak işlev.

  • exceptionContinuation
    Type: exn -> unit

    Özel durum oluşması durumunda çağırılacak işlev.

  • cancellationContinuation
    Type: OperationCanceledException -> unit

    İptal durumunda çağırılacak işlev.

  • cancellationToken
    Türü: CancellationToken

    Hesaplama ile ilişkilendirmek için isteğe bağlı iptali simgesi. Bu parametre sağlanmazsa varsayılan kullanılır.

Notlar

Herhangi bir iptal belirteci verdiyse, varsayılan iptali belirteci kullanılır.

Örnek

Aşağıdaki kod örneği kullanımları gösterilmektedir Async.StartWithContinuations.

open System.Windows.Forms

let bufferData = Array.zeroCreate<byte> 100000000

let async1 (label:System.Windows.Forms.Label) filename =
     Async.StartWithContinuations(
         async {
            label.Text <- "Operation started."
            use outputFile = System.IO.File.Create(filename)
            do! outputFile.AsyncWrite(bufferData)
            },
         (fun _ -> label.Text <- "Operation completed."),
         (fun _ -> label.Text <- "Operation failed."),
         (fun _ -> label.Text <- "Operation canceled."))



let form = new Form(Text = "Test Form")
let button1 = new Button(Text = "Start")
let button2 = new Button(Text = "Start Invalid", Top = button1.Height + 10)
let button3 = new Button(Text = "Cancel", Top = 2 * button1.Height + 20)
let label1 = new Label(Text = "", Width = 200, Top = 3 * button1.Height + 30)
form.Controls.AddRange [| button1; button2; button3; label1 |]
button1.Click.Add(fun args -> async1 label1 "longoutput.dat")
// Try an invalid filename to test the error case.
button2.Click.Add(fun args -> async1 label1 "|invalid.dat")
button3.Click.Add(fun args -> Async.CancelDefaultToken())
Application.Run(form)

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#)