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 -> unitBaş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ü: CancellationTokenHesaplama 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