Partager via


MailboxProcessor.Scan<'Msg,'T>, méthode (F#)

Recherche un message en consultant les messages dans l'ordre d'arrivée jusqu'à ce qu'une fonction fournie retourne une valeur Some.Les autres messages demeurent dans la file d'attente.

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

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

// Signature:
member this.Scan : ('Msg -> Async<'T> option) * ?int -> Async<'T>

// Usage:
mailboxProcessor.Scan (scanner)
mailboxProcessor.Scan (scanner, timeout = timeout)

Paramètres

  • scanner
    Type : 'Msg -> Async<'T> option

    Fonction qui retourne None si le message doit être ignoré ou Some si le message doit être traité et supprimé de la file d'attente.

  • timeout
    Type : int

    Délai d'attente facultatif en millisecondes.-1 est la valeur par défaut, qui correspond à Infinite.

Exceptions

Exception

Condition

TimeoutException

Levée lorsque le délai d'attente est dépassé.

Valeur de retour

Un calcul asynchrone (objet Async) qui scanner a créé à partir du message lu.

Notes

Cette méthode doit être utilisée dans le corps de l'agent.Pour chaque agent, un lecteur simultané au maximum pouvant être actif, un seul appel simultané à Receive, TryReceive, Scan ou TryScan peut être actif.Le corps de la fonction scanner est verrouillé pendant son exécution, mais le verrou est libéré avant l'exécution du flux de travail asynchrone.

Exemple

L'exemple suivant illustre l'utilisation de la méthode Scan.Dans ce code, les agents de processeur de boîte aux lettres gèrent une série de travaux simulés qui exécutent et calculent un résultat.

Un exemple de session suit.

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

Plateformes

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

Informations de version

Versions de bibliothèque principale F#

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

Voir aussi

Référence

Control.MailboxProcessor<'Msg>, classe (F#)

Microsoft.FSharp.Control, espace de noms (F#)