まずは Program.fs を定義
非同期処理+ポーリングによる60秒制限を盛り込みました。
ポーリングは苦肉の策です。
これ以外に書き方が分からない・・・・
後エラー処理も取ってしまう羽目に、どうしたものか
open System open System.Diagnostics open Common // モジュール名を変える事で別の問題の解答を取得出来る let getAnswer = async { let answer = Lesson_006.run() printfn "%A" answer Async.CancelDefaultToken() } let main() = // 非同期キャンセル情報 let token = Async.DefaultCancellationToken let stopWatch = new Stopwatch() // ポーリングの定義 let rec polling () = if not token.IsCancellationRequested then let msec = stopWatch.ElapsedMilliseconds if (msec <= 60000L) then polling () stopWatch.Start() // 非同期の実行 Async.Start (getAnswer, token) // ポーリング監視 polling () // 非同期処理のキャンセル Async.CancelDefaultToken() stopWatch.Stop(); printf "%d ms" stopWatch.ElapsedMilliseconds () main()
///////////////////////////////////////////
// 過去コード
///////////////////////////////////////////
// モジュール名を変える事で別の問題の解答を取得出来る let getAnswer () = let answer = Problem_0002.run() printfn "%A" answer open System.Diagnostics let main() = let stopWatch = new Stopwatch() stopWatch.Start() // 実際の処理 getAnswer() stopWatch.Stop(); printf "%d ms" stopWatch.ElapsedMilliseconds () main()