【发布时间】:2021-05-12 13:41:50
【问题描述】:
在 .NET Fx 4 中,我们曾经使用 this approach described here 来超时方法调用。这种方法依赖于 Thread.Abort(),它在 .NET 5 中不起作用,正如 here 所解释的那样“令人惊讶的是,从未为 .NET Core 实现 Thread.Abort”。 p>
在这种方法中超级有用的是被调用的方法(可能超时的方法)在主线程上执行,该线程用于执行发起调用的调用方方法。在此调用之前,异步线程被触发以在超时间隔期间等待,然后最终在捕获ThreadAbortException的主线程上调用Thread.Abort(),然后在捕获中处理程序调用Thread.ResetAbort()。
我们如何才能在某些 .NET Core / .NET 5 代码中获得相同的行为?
此 Microsoft 文档 Cancel async tasks after a period of time 显示了一些不同之处,即在 异步线程而不是在主线程上调用可以超时的方法。
【问题讨论】:
标签: .net multithreading .net-core async-await cancellation-token