【发布时间】:2016-11-24 19:18:08
【问题描述】:
我一直在尝试以各种方式让我的程序休眠 10 秒,然后再运行下一行代码。
this.SetContentView (Resource_Layout.Main)
let timer = new System.Timers.Timer(10000.0)
async{do timer.Start()}
this.SetContentView (Resource_Layout.next)
我无法找到任何解决方案。
【问题讨论】:
-
你试过
Async.sleep吗? -
是的。也许我没有正确使用它。 'Async.Sleep(10000)' 给了我类型不匹配
-
您正在创建一个异步计算,但从未真正启动它。所以它永远不会被执行。
timer.Start永远不会发生。 -
将
async { ... }视为seq { ... }之类的表达式。它创建一个 Async 对象,但该对象尚未开始运行,正如seq { 1..10 }将创建一个 IEnumerable,但该 IEnumerable 尚未产生任何值。这允许在创建 Async 和运行它之间分离关注点,这可以在两个不同的函数或模块中完成。这样,如果您需要在创建 Async 对象后对其进行操作(例如,通过将其包装在另一个处理异常并将其转换为错误值的async中),您可以这样做。启动异步是一个明确的步骤。
标签: asynchronous f# sleep