我有以下代码
var ts = new CancellationTokenSource();
var ct = ts.Token;
object result;
if (Task.Factory.StartNew(() =>
{
result = ThirdPartyLib.ReadFile(path);
}, ct).Wait(10000))
{
return result;
}
else
{
ts.Cancel();
return null;
}
ThirdPartyLib.ReadFile(path)是一个读取cad文件的对象的方法。 对于一些罕见的文件,此方法将挂起并产生100%的CPU使用率。 这就是我使用任务的原因,等待10秒。 (这是足够的时间来读取文件)并在发生这种情况时返回null。
我的应用程序将继续运行但cpu使用率很高,直到我关闭它,如果我调试代码并查看它们仍在运行的任务。
我已经包含了取消任务的CancellationToken
方法,但由于我自己无法实现取消逻辑,所以这没有效果(我只是将其包含在演示目的中)
没有任务和踏板我将使用不推荐使用的thread.Abort();
。
有没有办法强行杀死任务?