Async.SwitchToNewThread (Método de F#)

Crea un cálculo asincrónico que crea un nuevo subproceso y ejecuta su continuación en ese subproceso.

Espacio de nombres/Ruta de acceso del módulo: Microsoft.FSharp.Control

Ensamblado: FSharp.Core (en FSharp.Core.dll)

// Signature:
static member SwitchToNewThread : unit -> Async<unit>

// Usage:
Async.SwitchToNewThread ()

Valor devuelto

Cálculo que se ejecutará en un nuevo subproceso.

Ejemplo

En el ejemplo de código siguiente se muestra cómo usar Async.SwitchToNewThread y Async.SwitchToThreadPool para ajustar una llamada a un método sincrónico como método asincrónico.

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

Plataformas

Windows 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2

Información de versiones

Runtime de F#

Se admite en las versiones: 2.0, 4.0

Silverlight

Se admite en la versión: 3

Vea también

Referencia

Control.Async (Clase de F#)

Microsoft.FSharp.Control (Espacio de nombres de F#)

Historial de cambios

Fecha

Historial

Motivo

Julio de 2010

Se ha agregado un ejemplo de código.

Mejora de la información.