如何在Thread.Abort()上取消任务

时间:2018-11-29 08:06:59

标签: c# multithreading task task-parallel-library

我正在实现别人调用的方法。如果我的方法花了很长时间,则调用者将调用nodemon app.js。我在“方法”中启动了一些任务,如果我的线程被中止,则需要取消这些任务。

我目前猜想我有超时时间,并且在此时间间隔后取消任务。超时并不总是相同的,这取决于在我的方法之前执行的操作。

有没有办法将我的任务与该线程的生命周期联系起来?


更新

为防止进一步的评论,我不应该使用Thread.Abort(),这是处理中止(我没有叫过,不能更改)的代码

Thread.Abrot()

我使用 using (var cancelationTokenSource = new CancellationTokenSource()) { try { DoWork(cancelationTokenSource.Token); } catch (ThreadAbortException) { cancelationTokenSource.Cancel(); throw; } } 而不是CancelationToken

1 个答案:

答案 0 :(得分:0)

您可以处理ThreadAbortException进行清理,包括在必要时中止其他线程。

void MyThreadProc()
{
    try
    {
        //Do interesting things
    }
    catch ( ThreadAbortException e )
    {
        childThread.Abort();
    }
}