Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Async.StartImmediate, méthode (F#)

Exécute un calcul asynchrone, en commençant immédiatement sur le thread du système d'exploitation actuel.

Espace de noms/Chemin du module : Microsoft.FSharp.Control

Assembly : FSharp.Core (in FSharp.Core.dll)

// Signature:
static member StartImmediate : Async<unit> * CancellationToken option -> unit

// Usage:
Async.StartImmediate (computation)
Async.StartImmediate (computation, cancellationToken = cancellationToken)

computation

Type : Async<unit>

Calcul asynchrone à exécuter.

cancellationToken

Type : CancellationToken

Le jeton d'annulation facultatif à associer au calcul. La valeur par défaut est utilisée si ce paramètre n'est pas fourni.

Si aucun jeton d'annulation n'est fourni, le jeton d'annulation par défaut est utilisé.

L'exemple de code suivant montre comment utiliser Async.StartImmediate pour démarrer un calcul asynchrone dans le thread actuel. Souvent, une opération asynchrone doit mettre à jour l'interface utilisateur, ce qui doit toujours être effectué sur le thread de l'interface utilisateur. Lorsque votre opération asynchrone doit commencer en mettant à jour l'interface utilisateur, Async.StartImmediate est un meilleur choix que Async.Start, qui commence l'opération asynchrone dans un thread ThreadPool.



open System.Windows.Forms

let bufferData = Array.zeroCreate<byte> 100000000

let async1 (button : Button) =
     async {
       button.Text <- "Busy"
       button.Enabled <- false
       let context = System.Threading.SynchronizationContext.Current
       do! Async.SwitchToThreadPool()
       use outputFile = System.IO.File.Create("longoutput.dat")
       do! outputFile.AsyncWrite(bufferData)
       do! Async.SwitchToContext(context)
       button.Text <- "Start"
       button.Enabled <- true
     }


let form = new Form(Text = "Test Form")
let button = new Button(Text = "Start")
form.Controls.Add(button)
button.Click.Add(fun args -> Async.StartImmediate(async1 button))
Application.Run(form)


Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2

Versions de bibliothèque principale F#

Prise en charge dans : 2,0, 4,0, portables

Ajouts de la communauté

AJOUTER
Afficher: