F#有自己的等价物吗,还是唯一的等价物是 Task.Delay(-1) |> Async.AwaitTask
?
F#有自己的等价物吗,还是唯一的等价物是 Task.Delay(-1) |> Async.AwaitTask
?
Task.Delay(-1)
的Discord机器人示例,它们在任务中执行以下操作:
Task.Delay(-1)
,使任务永久运行(并将处理这些事件)Program.fs
中的 main
函数可以启动MailboxProcessor,设置WaitHandle
,然后在其上调用 .WaitOne()
,这将具有相同的效果:永久等待(不在无限循环中,因此您不会将CPU使用率达到100%),以使您的机器人程序不退出。.WaitOne()
调用并退出。(顺便说一下,退出主程序也会自动关闭任何仍在运行的异步进程)。Task.Delay(-1) |> Async.AwaitTask
。
Task.Delay(-1)
何时会有用(相对于具有实用性的Task.Delay(-1, someCancellationToken)
)。也许您可以解释一下为什么需要这样做,然后有人可能能够建议在 F# 中实现您的目标的更好方法,而不是使用没有取消令牌的Task.Delay(-1)
。 - rmunnTask.Delay(-1)
的原因是为了在 F# 中编写 Discord 机器人。如果使用CancellationToken
会更有意义。我之所以提到Task.Delay(-1)
,是因为它几乎被所有 Discord.NET 和 DSharpPlus 机器人示例使用。这似乎是该生态系统的通用做法。 - robbie