Async.SwitchToNewThread-Methode (F#)
Erstellt eine asynchrone Berechnung, die einen neuen Thread erstellt und die Fortsetzung in diesem Thread ausführt.
Namespace/Modulpfad: Microsoft.FSharp.Control
Assembly: FSharp.Core (in FSharp.Core.dll)
// Signature:
static member SwitchToNewThread : unit -> Async<unit>
// Usage:
Async.SwitchToNewThread ()
Rückgabewert
Eine Berechnung, die in einem neuen Thread ausgeführt wird.
Beispiel
Im folgenden Codebeispiel wird veranschaulicht, wie mit Async.SwitchToNewThread und Async.SwitchToThreadPool ein synchroner Methodenaufruf als asynchrone Methode umschlossen wird.
open System
open System.IO
let asyncMethod f =
async {
do! Async.SwitchToNewThread()
let result = f()
do! Async.SwitchToThreadPool()
return result
}
let GetFilesAsync(path) = asyncMethod (fun () -> Directory.GetFiles(path))
let listFiles path =
async {
let! files = GetFilesAsync(path)
Array.iter (fun elem -> printfn "%s" elem) files
}
printfn "Here we go..."
// The output is interleaved, which shows that these are both
// running simultaneously.
Async.Start(listFiles ".")
Async.Start(listFiles ".")
Console.WriteLine("Press a key to continue...")
Console.ReadLine() |> ignore
Plattformen
Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Versionsinformationen
F#-Kern-Bibliotheks-Versionen
Unterstützt in: 2,0, 4,0, portablen