Metodo MailboxProcessor.Scan<'Msg,'T> (F#)
Cerca un messaggio analizzando i messaggi in ordine di arrivo finché una funzione fornita non restituisce un valore Some.Gli altri messaggi rimangono nella coda.
Percorso di spazio dei nomi/modulo: 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)
Parametri
scanner
Tipo: 'Msg -> Async<'T> optionFunzione che restituisce None se il messaggio deve essere ignorato oppure Some se il messaggio deve essere elaborato e rimosso dalla coda.
timeout
Tipo: intTimeout facoltativo in millisecondi.L'impostazione predefinita è -1, che corrisponde a Infinite.
Eccezioni
Eccezione |
Condizione |
---|---|
Generata se viene superato il timeout. |
Valore restituito
Calcolo asincrono (oggetto asincrono) che scanner compilato al di fuori del messaggio di lettura.
Note
Questo metodo deve essere utilizzato all'interno del corpo dell'agente.Per ogni agente può essere attivo al massimo un lettore simultaneo, pertanto non può essere attiva più di una chiamata simultanea di Receive, TryReceive, Scan o TryScan.Il corpo della funzione scanner viene bloccato durante l'esecuzione, ma il blocco viene rilasciato prima dell'esecuzione del flusso di lavoro asincrono.
Esempio
Nell'esempio seguente viene illustrato come utilizzare il metodo Scan.In questo codice, gli agenti del processore della cassetta postale gestiscono una serie di processi simulati che eseguono e calcolano un risultato.
Di seguito viene riportata una sessione di esempio.
Piattaforme
Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Informazioni sulla versione
Versioni della libreria di base F#
Supportato in: 2,0, 4,0, portabile