【F# + ASP.NET MVC】 非同期処理にタイムアウトを指定するには

◆ Controller

namespace Sample.Controllers

open System.Web
open System.Web.Mvc

type HomeController() =
    inherit AsyncController()

    // 非同期処理(3秒でタイムアウト)
    [<AsyncTimeout(3000)>]
    member this.IndexAsync() =
        this.AsyncManager.OutstandingOperations.Increment() |> ignore
        
        // 非同期処理を実行
        async {
            // テスト用に3秒待機
            do! Async.Sleep(3000)

            this.AsyncManager.Parameters.["result"] <- "タイムアウト失敗"
            this.AsyncManager.OutstandingOperations.Decrement() |> ignore
        }
        |> Async.Start

    // 完了処理
    member this.IndexCompleted(result : string) =
        this.ViewData.["Html"] <- result
        this.View() :> ActionResult

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中