gpt4 book ai didi

.net - 使用.NET 5 CancellationToken调用可以在主线程上超时的方法

转载 作者:行者123 更新时间:2023-12-02 18:45:33 25 4
gpt4 key购买 nike

在 .NET Fx 4 中,我们曾经使用 this approach described here使方法调用超时。这种方法依赖于Thread.Abort()正如所解释的那样,这在 .NET 5 中不起作用 here “Thread.Abort 从未针对 .NET Core 实现,这可能会让人感到惊讶”

这种方法的 super 有用之处在于,被调用的方法(可能超时的方法)是在主线程上执行的,该线程用于执行发起调用的调用方方法。在此调用之前,会触发一个异步线程,在超时间隔内等待,然后最终调用 Thread.Abort()在捕获ThreadAbortException主线程上然后在 catch 处理程序中调用 Thread.ResetAbort() .

我们如何才能对某些 .NET Core/.NET 5 代码实现相同的行为?

此 Microsoft 文档 Cancel async tasks after a period of time显示了不同的情况,其中在异步线程上而不是在主线程上调用可以超时的方法。

最佳答案

CancellationToken合作取消;如果您可以更改有问题的代码以定期检查 token 以查看它是否应该放弃,那么:就这样做。但是,您不能只是将 CancellationToken 添加到代码中并期望它像 Thread.Abort() 一样开始执行操作(触发时);这是非常的不同,因为它主动中断执行而不需要被中断的代码的任何合作。

关于.net - 使用.NET 5 CancellationToken调用可以在主线程上超时的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67488336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com