Поделиться через


Свойство MailboxProcessor.Error<'Msg> (F#)

Вызывается, если в результате выполнения агента возникает исключение.

Пространство имен/путь к модулю: Microsoft.FSharp.Control

Сборка: FSharp.Core (в FSharp.Core.dll)

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

// Usage:
mailboxProcessor.Error

Возвращаемое значение

Событие ошибки как объект, который реализует IEvent

Пример

В следующем коде показано, как использовать событие Error для обработки исключение, которое происходит в теле агента.

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

Ниже представлен пример сеанса.

            

Платформы

Windows 7, Windows Vista с пакетом обновления 2 (SP2), Windows XP с пакетом обновления 3 (SP3), Windows XP x64 с пакетом обновления 2 (SP2), Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2), Windows Server 2003 с пакетом обновления 2 (SP2)

Сведения о версии

Среда выполнения F#

Поддерживается в версиях 2.0, 4.0

Silverlight

Поддерживается в версии 3

См. также

Ссылки

Класс Control.MailboxProcessor<'Msg> (F#)

Пространство имен Microsoft.FSharp.Control (F#)

Журнал изменений

Дата

Журнал

Причина

Январь 2011

Добавлен пример кода.

Улучшение информации.