Compartir a través de


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

    Funció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: int

    Tiempo de espera opcional en milisegundos.Su valor predeterminado es -1, lo que equivale a Infinite.

Excepciones

Excepción

Condition

TimeoutException

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

Vea también

Referencia

Control.MailboxProcessor<'Msg> (Clase de F#)

Microsoft.FSharp.Control (Espacio de nombres de F#)