共用方式為


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。

例外狀況

例外狀況

條件

TimeoutException

在超出逾時值時擲回。

傳回值

非同步計算 (Async 物件), scanner 建置讀取訊息。

備註

這個方法要在代理程式的主體中使用。 針對每個代理程式,最多可以有一個使用中並行閱讀器,所以 ReceiveTryReceiveScanTryScan 的使用中呼叫不能超過一個。 scanner函式的主體在執行期間遭被鎖定,但在執行非同步工作流之前已解除鎖定。

範例

下列範例示範如何使用 Scan 方法。 在此程式碼中,信箱處理器代理程式會管理一連串執行並計算結果的類比工作。

範例工作階段如下。

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

平台

Windows 8 中, Windows 7, Windows Server 2012 上, Windows Server 2008 R2

版本資訊

F# 核心程式庫版本

支援版本:2.0, 4.0,可攜式執行檔 (PE)。

請參閱

參考

Control.MailboxProcessor<'Msg> 類別 (F#)

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