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

How to cancle a task on Thread.Abort()

我正在实施一个由其他人调用的方法。如果我的方法花费很长时间,调用者将调用 Thread.Abort()。我在我的方法中启动了一些任务,如果我的线程中止,我需要取消这些任务。

我目前猜测我的超时时间并在此时间跨度后取消任务。它并不总是相同的超时,具体取决于在我的方法之前执行的操作。

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


更新

为了防止任何进一步的评论,我不应该使用 Thread.Abrot(),这是处理中止的代码 (不是我调用的,无法更改):

        using (var cancelationTokenSource = new CancellationTokenSource())
        {
            try
            {
                DoWork(cancelationTokenSource.Token);
            }
            catch (ThreadAbortException)
            {
                cancelationTokenSource.Cancel();
                throw;
            }
        }

我用的是CancelationToken不是Thread.Abort()

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

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