Async.StartChild<'T> Yöntemi (F#)
Zaman uyumsuz iş akışı içinden çocuk hesaplamayı başlatır. Bu, birden çok zaman uyumsuz hesaplamanın eşzamanlı olarak yürütülmesini sağlar.
Ad alanı/modül yol: Microsoft.FSharp.Control
Derleme: FSharp.Core (FSharp.Core.dll),
// Signature:
static member StartChild : Async<'T> * ?int -> Async<Async<'T>>
// Usage:
Async.StartChild (computation)
Async.StartChild (computation, millisecondsTimeout = millisecondsTimeout)
Parametreler
computation
Türü: zaman uyumsuz<'T>Alt hesaplama.
millisecondsTimeout
Türü: intMilisaniye cinsinden zaman aşımı değeri. Eğer sağlanmadıysa, Infinite'e karşılık gelen varsayılan değer -1'dir.
Dönüş Değeri
Giriş hesaplamasının bitmesini bekleyen yeni bir hesaplama.
Notlar
Bu yöntem normal olarak F# zaman uyumsuz iş akışında let! bağlamasının immediate sağ tarafınında kullanılmalıdır yani:
async {
...
let! completor1 = childComputation1
|> Async.StartChild
let! completor2 = childComputation2
|> Async.StartChild
...
let! result1 = completor1
let! result2 = completor2
... }
Bu şekilde kullanıldığında, her kullanımı StartChild bir örneğini başlatır childComputation ve döndüren bir completor bir hesaplama işlemi tamamlama için beklenecek temsil eden nesne. Çalıştırıldığında, completor tamamlanmasını bekler childComputation.
Örnek
Aşağıdaki kod örneği kullanımları gösterilmektedir Async.StartChild.
open System.Windows.Forms
let bufferData = Array.zeroCreate<byte> 100000000
let asyncChild filename =
async {
printfn "Child job start: %s" filename
use outputFile = System.IO.File.Create(filename)
do! outputFile.AsyncWrite(bufferData)
printfn "Child job end: %s " filename
}
let asyncParent =
async {
printfn "Parent job start."
let! childAsync1 = Async.StartChild(asyncChild "longoutput1.dat")
let! childAsync2 = Async.StartChild(asyncChild "longoutput2.dat")
let! result1 = childAsync1
let! result2 = childAsync2
printfn "Parent job end."
}
let form = new Form(Text = "Test Form")
let button = new Button(Text = "Start")
form.Controls.Add(button)
button.Click.Add(fun args -> Async.Start(asyncParent)
printfn "Completed execution." )
Application.Run(form)
Örnek Çıktı
İşleri aynı anda çalıştırdığınız için çıktı Aralanmış.
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