f#在一段延迟后设置一个函数的调用间隔

时间:2018-03-10 15:28:30

标签: f# setinterval

我想要每隔24小时重复一次例行公事,怎么能在F#中完成呢?

module Program 

let private someRoutine =
    printfn "someRoutine"


let setInterval = 
     printfn "repeating"
     someRoutine.  // call repeatedly every 24 hour

我的尝试

Task.Delay 1000 setInterval

1 个答案:

答案 0 :(得分:0)

不确定你的意思是“出于惯用的编程世界”。

您引用的示例是使用带有取消令牌的Mailboxprocessor。它涵盖了一般用例,可能可以满足您的需求。

您可能会发现Timer class有用。参见那里的例子。

这是睡眠时间为5秒的计时器,然后打印出时间:

open System

[<EntryPoint>]
let main argv =

    let timer = new Timers.Timer(5000.)
    let event = Async.AwaitEvent (timer.Elapsed) |> Async.Ignore

    printfn "%A" DateTime.Now
    timer.Start()
    printfn "%A" "A-OK"
    while true do
        Async.RunSynchronously event
        printfn "%A" DateTime.Now

    printfn "%A" argv
    0 // return an integer exit code
  

λ。\ AsyncTimer2.exe
  2018/03/11 10:35:24
  “A-OK”
  2018/03/11 10:35:29
  2018/03/11 10:35:34
  2018/03/11 10:35:39
  2018/03/11 10:35:44
  2018/03/11 10:35:49