首页 > 解决方案 > 如何在 docker 的 dotnet core 中将线程或任务设置为在给定时间后自动中止/取消?

问题描述

我的 dotnet 核心代码中有一种特殊情况,要求我能够中止/取消运行经常卡在执行中的第三方代码的线程。

我无法使用取消令牌的推荐做法,因为第三方代码是违规方。

违规代码来自 ssh.net 项目,我试图避免/解决的错误如下: https ://github.com/sshnet/SSH.NET/issues/355

以下(优秀)建议会对我有所帮助,但它是通过使用 kernel32 dll 提出的,我必须使代码在 Linux 环境中的 docker 下工作: Is it possible to abort a Task like aborting a Thread (Thread.Abort method) ?

我已经查看了 Linux 中的 libc 规范,但我很难弄清楚在那个平台上什么是正确的实现。

ThreadHelper.RunWithAbort(() => {
    Client?.Disconnect();
    Client?.Dispose();
}, TimeSpan.FromSeconds(10));

如果代码冻结并且不影响应用程序的其余部分或系统本身,代码应该能够终止第三方代码。

标签: c#linux

解决方案


推荐阅读