MailboxProcessor.Scan<'Msg,'T> 方法 (F#)

通过按到达顺序浏览消息来扫描消息,直至提供的函数返回 Some 值为止。其他消息保留在队列中。

命名空间/模块路径: Microsoft.FSharp.Control

程序集:FSharp.Core(在 FSharp.Core.dll 中)

// Signature:
member this.Scan : ('Msg -> Async<'T> option) * ?int -> Async<'T>

// Usage:
mailboxProcessor.Scan (scanner)
mailboxProcessor.Scan (scanner, timeout = timeout)

参数

  • scanner
    类型:'Msg -> Async<'T> option

    用于在跳过消息时返回 None 、 在处理消息并将其从队列中移除时返回 Some 的函数。

  • timeout
    类型:int

    可选超时(以毫秒为单位)。默认值为 -1,它对应于 Infinite。

异常

异常

Condition

TimeoutException

在超过超时的情况下引发。

返回值

scanner 脱离读取消息生成的异步计算(Async 对象)。

备注

此方法可在代理的主体内使用。对于每个代理,至多只有一个并发读线程可处于活动状态,因此不能有多个对 Receive, TryReceive, ScanTryScan 的并发调用处于活动状态。scanner 函数的正文在其执行期间被锁定,但会在执行异步工作流之前解锁。

示例

下面的示例演示如何使用 Scan 方法。在此代码中,邮箱处理器代理管理一系列运行和计算结果的模拟作业。

示例会话如下。

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

平台

Windows 8,Windows 7,Windows server 2012中,Windows server 2008 R2

版本信息

F#核心库版本

支持:2.0,4.0,可移植

请参见

参考

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

Microsoft.FSharp.Control 命名空间 (F#)