Condividi tramite


Metodo MailboxProcessor.TryScan<'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.TryScan : ('Msg -> Async<'T> option) * ?int -> Async<'T option>

// Usage:
mailboxProcessor.TryScan (scanner)
mailboxProcessor.TryScan (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().

Valore restituito

Calcolo asincrono (oggetto asincrono) che scanner compilato al di fuori del messaggio di lettura.

Note

Se viene specificato un timeout, restituisce None se tale timeout viene superato. 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 ai metodi 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.

Piattaforme

Windows 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2.

Informazioni sulla versione

F# Runtime

Supportato in: 2.0, 4.0

Silverlight

Supportato in: 3

Vedere anche

Riferimenti

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

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

Cronologia delle modifiche

Data

Cronologia

Motivo

Settembre 2010

Comportamento di multithreading chiarificato.

Miglioramento delle informazioni.

Aprile 2011

Chiarimento relativo al comportamento di timeout.

Correzione di bug nel contenuto.