Export (0) Print
Expand All

MailboxProcessor.Error<'Msg> Property (F#)

Updated: January 2011

Occurs when the execution of the agent results in an exception.

Namespace/Module Path: Microsoft.FSharp.Control

Assembly: FSharp.Core (in FSharp.Core.dll)

// Signature:
member this.Error :  IEvent<Exception>

// Usage:
mailboxProcessor.Error

The error event as an object that implements IEvent

The following code shows how to use the Error event to handle an exception that occurs in the body of the agent.


open System

type Message = string

let agent = MailboxProcessor<Message>.Start(fun inbox ->
    let rec loop n =
        async {
                let! message = inbox.Receive(10000);
                printfn "Message number %d. Message contents: %s" n message
                do! loop (n + 1)
        }
    loop 0)

agent.Error.Add(fun exn ->
    match exn with
    | :? System.TimeoutException as exn -> printfn "The agent timed out."
                                           printfn "Press Enter to close the program."
                                           Console.ReadLine() |> ignore
                                           exit(1)
    | _ -> printfn "Unknown exception.")

printfn "Mailbox Processor Test"
printfn "Type some text and press Enter to submit a message."

while true do
    Console.ReadLine() |> agent.Post


An example session follows.

Mailbox Processor Test
Type some text and press Enter to submit a message.
hello
Message number 0. Message contents: hello
testing
Message number 1. Message contents: testing
The agent timed out.
Press Enter to close the program.

Windows 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2

F# Runtime

Supported in: 2.0, 4.0

Silverlight

Supported in: 3

Date

History

Reason

January 2011

Added code example.

Information enhancement.

Community Additions

ADD
Show:
© 2014 Microsoft