在运行下一个操作之前休眠x秒

时间:2016-11-24 19:18:09

标签: asynchronous f# sleep

我一直在尝试以各种方式让我的程序在运行下一行代码之前休眠10秒钟。

this.SetContentView (Resource_Layout.Main)  
let timer = new System.Timers.Timer(10000.0)
async{do timer.Start()}
this.SetContentView (Resource_Layout.next)

我无法获得任何解决方案。

1 个答案:

答案 0 :(得分:4)

如果你想使用async而不是更直接的方式(创建计时器并在计时器的事件处理程序中设置内容视图),那么你需要这样的东西:

this.SetContentView (Resource_Layout.Main)  
async{
   do! Async.Sleep(10000.0)
   this.SetContentView (Resource_Layout.next) }
|> Async.StartImmediate

关键点:

  • 使用do! Async.Sleep可以阻止异步计算的执行
  • SetContentView内移动async来电,会在睡眠后发生
  • 使用Async.StartImmediate启动工作流程 - 休眠确保其余计算在相同的线程上下文中运行(意味着它将在UI线程上运行,代码将能够访问UI元件)。