MailboxProcessor.Scan<'Msg,'T> (Método de F#)
Busca un mensaje desplazándose por los mensajes según el orden de llegada hasta que una función dada devuelve un valor Some.Los demás mensajes permanecen en la cola.
Espacio de nombres/Ruta de acceso del módulo: Microsoft.FSharp.Control
Ensamblado: FSharp.Core (en FSharp.Core.dll)
// Signature:
member this.Scan : ('Msg -> Async<'T> option) * ?int -> Async<'T>
// Usage:
mailboxProcessor.Scan (scanner)
mailboxProcessor.Scan (scanner, timeout = timeout)
Parámetros
scanner
Tipo: 'Msg -> Async<'T> optionFunción que devuelve None si se debe omitir el mensaje o Some si se debe procesar el mensaje y quitarlo de la cola.
timeout
Tipo: intTiempo de espera opcional en milisegundos.Su valor predeterminado es -1, lo que equivale a Infinite.
Excepciones
Excepción |
Condition |
---|---|
Se produce cuando se supera el tiempo de espera. |
Valor devuelto
Cálculo asincrónico (objeto Async) que scanner compiló a partir del mensaje leído.
Comentarios
Este método se usa en el cuerpo del agente.Por cada agente, solo puede haber un lector simultáneo activo como máximo, por lo que no puede haber más de una llamada simultánea activa a Receive, TryReceive, Scan o TryScan.El cuerpo de la función scanner se bloquea durante su ejecución, pero dicho bloqueo se libera antes de la ejecución del flujo de trabajo asincrónico.
Ejemplo
En el siguiente ejemplo, se muestra cómo utilizar el método Scan.En este código, los agentes del procesador del buzón administran una serie de trabajos simulados que ejecutan y calculan un resultado.
A continuación se muestra una sesión de ejemplo.
Plataformas
Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Información de versiones
Versiones de la biblioteca básica de F#
Se admite en: 2.0, 4.0, portables