MailboxProcessor.Start < "Msg > Metoda (F#)
Vytvoří a spustí agent.
Cesta k oboru názvů nebo modul: Microsoft.FSharp.Control
Sestavení: FSharp.Core (v FSharp.Core.dll)
// Signature:
static member Start : (MailboxProcessor<'Msg> -> Async<unit>) * ?CancellationToken -> MailboxProcessor<'Msg>
// Usage:
MailboxProcessor.Start (body)
MailboxProcessor.Start (body, cancellationToken = cancellationToken)
Parametry
body
Type: MailboxProcessor<'Msg> -> Async<unit>K výrobě asynchronní výpočtu, který bude spuštěn jako čtení smyčky pro funkci MailboxProcessor při Start se nazývá.
cancellationToken
Typ: CancellationTokenToken volitelné zrušení body.Výchozí hodnota je Async.DefaultCancellationToken.
Vrácená hodnota
Vytvoření MailboxProcessor.
Poznámky
body Funkce slouží ke generování asynchronní výpočtu provedeny Agent.
Příklad
Následující příklad kódu ukazuje, jak spustit agenta procesoru poštovní schránky.V tomto příkladu každý řádek vstupu z konzoly je zaúčtována do fronty zpráv.Program čte jednotlivé zprávy a odpovědi pomocí kanál odpovědi.Po přijetí zvláštní zpráva "Stop" Stop odpověď je odeslána a ukončí program.
open System
type Message = string * AsyncReplyChannel<string>
let formatString = "Message number {0} was received. Message contents: {1}"
let printThreadId note =
// Append the thread ID.
printfn "%d : %s" System.Threading.Thread.CurrentThread.ManagedThreadId note
let agent = MailboxProcessor<Message>.Start(fun inbox ->
let rec loop n =
async {
let! (message, replyChannel) = inbox.Receive();
printThreadId "MailboxProcessor"
if (message = "Stop") then
replyChannel.Reply("Stopping.")
else
replyChannel.Reply(String.Format(formatString, n, message))
do! loop (n + 1)
}
loop 0)
printfn "Mailbox Processor Test"
printfn "Type some text and press Enter to submit a message."
printfn "Type 'Stop' to close the program."
let rec loop() =
printf "> "
let input = Console.ReadLine()
printThreadId("Console loop")
let reply = agent.PostAndReply(fun replyChannel -> input, replyChannel)
if (reply <> "Stopping.") then
printfn "Reply: %s" reply
loop()
else
()
loop()
printfn "Press Enter to continue."
Console.ReadLine() |> ignore
Následuje v relaci příklad.
Platformy
Windows 8, Windows 7, Windows Server 2012 Windows Server 2008 R2
Informace o verzi
F# základní verze knihovny
Podporovány: 2.0, 4.0, přenosné