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。
例外狀況
例外狀況 |
條件 |
---|---|
在超出逾時值時擲回。 |
傳回值
非同步計算 (Async 物件), scanner 建置讀取訊息。
備註
這個方法要在代理程式的主體中使用。 針對每個代理程式,最多可以有一個使用中並行閱讀器,所以 Receive、TryReceive、Scan 或 TryScan 的使用中呼叫不能超過一個。 scanner函式的主體在執行期間遭被鎖定,但在執行非同步工作流之前已解除鎖定。
範例
下列範例示範如何使用 Scan 方法。 在此程式碼中,信箱處理器代理程式會管理一連串執行並計算結果的類比工作。
範例工作階段如下。
平台
Windows 8 中, Windows 7, Windows Server 2012 上, Windows Server 2008 R2
版本資訊
F# 核心程式庫版本
支援版本:2.0, 4.0,可攜式執行檔 (PE)。