如何在 F# 中同时等待取消令牌和 EventWaitHandle?

Posted

技术标签:

【中文标题】如何在 F# 中同时等待取消令牌和 EventWaitHandle?【英文标题】:how to wait on a cancellation token AND an EventWaitHandle at the same time, in F#? 【发布时间】:2021-04-14 16:50:44 【问题描述】:

我想找到一种方法来结合这两行:

cancellationToken.WaitHandle.WaitOne() |> ignore
waitHandle.WaitOne() |> ignore

无论哪个先发生,都会让执行流程继续。这个可以吗?

【问题讨论】:

你对your previous question的解决方案有什么问题? 没有,这正是我想要的。当我面对这个问题时,我从不同的角度看待它,并没有意识到这是同一件事。我认为我们可以安全地结束这个问题。 【参考方案1】:

我假设您可以将两个句柄放在一个数组中,然后等待它。比如:

[|
    cancellationToken.WaitHandle
    waitHandle
|] |> WaitHandle.WaitAny |> ignore

注意:我没有尝试编译或运行此代码。

【讨论】:

以上是关于如何在 F# 中同时等待取消令牌和 EventWaitHandle?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中等待单个事件,带有超时和取消

Polly Timeout 乐观使用 HttpClientFactory。如何使用取消令牌?

如何取消颤振/飞镖集团中的“等待”

使用单个取消令牌添加中止所有任务

如何使用取消令牌Azure Service Bus(SubscriptionClient)

服务器端 C# Websocket,如何在监听取消令牌时运行循环?