我如何中止任务?

时间:2016-11-25 13:12:12

标签: c# multithreading task-parallel-library

我有以下代码

        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方法,但由于我自己无法实现取消逻辑,所以这没有效果(我只是将其包含在演示目的中)

tasks

没有任务和踏板我将使用不推荐使用的thread.Abort();。 有没有办法强行杀死任务?

0 个答案:

没有答案