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.
İsim Uzayı/Modül Yolu: Microsoft.FSharp.Control
Derleme FSharp.Core (FSharp.Core.dll içinde)
// Signature:
static member StartChild : Async<'T> * ?int -> Async<Async<'T>>
// Usage:
Async.StartChild (computation)
Async.StartChild (computation, millisecondsTimeout = millisecondsTimeout)
Parametreler
computation
Tür: Async<'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.
Açıklamalar
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 birini kullanın StartChild örneğini başlatır childComputation ve bir completor nesneyi gösteren bir hesaplama beklenecek tamamlama işlemi. Ç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 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
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. |