Compartilhar via


MailboxProcessor.Scan <'Msg, T' > Método (F#)

Digitalizações para uma mensagem procurando pelas mensagens na ordem de chegada até que uma função fornecida retornar um valor de Some .Outras mensagens permanecem na fila.

Namespace/Module Path: Microsoft.FSharp.Control

Assembly: FSharp.Core (em 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>opção

    Uma função que retorna None se a mensagem deve ser tiver ignorado Some , ou se a mensagem deve ser processada e removido da fila.

  • timeout
    Tipo: int

    Um tempo limite em milissegundos opcional.Padrão é -1 que corresponde a Infinite.

Exceções

Exceção

Condição

TimeoutException

Acionada quando o tempo limite é excedido.

Valor de retorno

Uma computação assíncrono (objeto deAsync ) que scanner compilado fora da mensagem de leitura.

Comentários

Este método é para uso dentro do corpo de agente.Para cada agente, no máximo um leitor simultânea pode ser ativo, o que não mais do que uma chamada a Recebersimultânea, a TryReceive, a Scan ou a TryScan podem ser ativos.O corpo da função de scanner é bloqueado durante sua execução, mas o bloqueio será liberado antes da execução de fluxo de trabalho assíncrono.

Exemplo

O exemplo a seguir mostra como usar o método de Scan .Em esse código, agentes do processador de caixa postal gerenciam uma série de trabalho simulados que executam computador cria um e um resultado.

Uma sessão exemplo seguinte.

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

Plataformas

O windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2

Informações de Versão

Versões da biblioteca principal de F#

Suportado em: 2,0, 4,0, portáteis

Consulte também

Referência

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

Microsoft.FSharp.Control Namespace (F#)