Condividi tramite


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> option

    Funzione che restituisce None se il messaggio deve essere ignorato oppure Some se il messaggio deve essere elaborato e rimosso dalla coda.

  • timeout
    Tipo: int

    Timeout facoltativo in millisecondi.L'impostazione predefinita è -1, che corrisponde a Infinite.

Eccezioni

Eccezione

Condizione

TimeoutException

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

Vedere anche

Riferimenti

Classe Control.MailboxProcessor<'Msg> (F#)

Spazio dei nomi Microsoft.FSharp.Control (F#)