Freigeben über


MailboxProcessor.Scan<'Msg,'T>-Methode (F#)

Sucht nach einer Meldung, indem die Meldungen in der Reihenfolge ihres Eintreffens geprüft werden, bis eine angegebene Funktion einen Some-Wert zurückgibt.Andere Meldungen verbleiben in der Warteschlange.

Namespace/Modulpfad: 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)

Parameter

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

    Eine Funktion zur Rückgabe von None, wenn die Meldung übersprungen werden soll, oder Some, wenn die Meldung verarbeitet und aus der Warteschlange entfernt werden soll.

  • timeout
    Typ: int

    Ein optionales Timeout in Millisekunden.Wird standardmäßig auf -1 festgelegt, was Infinite entspricht.

Ausnahmen

Ausnahme

Bedingung

TimeoutException

Wird ausgelöst, wenn das Timeout überschritten wird.

Rückgabewert

Eine asynchrone Berechnung (Async-Objekt), die vom scanner aus der gelesenen Meldung erstellt wurde.

Hinweise

Diese Methode ist für die Verwendung im Coderumpf des Agents vorgesehen.Für jeden Agent darf maximal ein Reader gleichzeitig aktiv sein. Es darf also nur maximal ein Aufruf von Receive, TryReceive, Scan oder TryScan aktiv sein.Der Text der scanner-Funktion wird gesperrt während seiner Ausführung, die Sperre wird jedoch vor der Ausführung des asynchronen Workflows aufgehoben.

Beispiel

Im folgenden Beispiel wird die Verwendung der Scan-Methode gezeigt.In diesem Code verwalten Postfachprozessoragenten eine Reihe von simulierten Aufträgen, die ein Ergebnis ausführen und berechnen.

Eine Beispielsitzung folgt.

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

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

Siehe auch

Referenz

Control.MailboxProcessor<'Msg>-Klasse (F#)

Microsoft.FSharp.Control-Namespace (F#)