如何取消 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();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Thread.Abort()方法冻结

来自分类Dev

如何取消挂起的任务?

来自分类Dev

如何批量取消任务?

来自分类Dev

ProtocolBuffer,SerializeToArray()上的abort()

来自分类Dev

将处置一个在其方法上启动了线程的对象时,无需调用Thread.Abort()

来自分类Dev

如何创建已取消的任务

来自分类Dev

如何不继续取消的任务?

来自分类Dev

如何使用CancellationToken取消任务?

来自分类Dev

如何还原已取消的任务

来自分类Dev

Thread.Abort()和Thread.Suspend()之间的区别?

来自分类Dev

调用Thread.Abort时最终不执行

来自分类Dev

这是调用Thread.Abort()的合适地方吗?

来自分类Dev

调用Thread.Abort时最终不执行

来自分类Dev

后台工作人员处理 vs thread.abort

来自分类Dev

如何通过Tornado HTTP服务器上的HTTP使长任务“可取消”?

来自分类Dev

如何创建可取消的任务循环?

来自分类Dev

如何取消并发的繁重任务?

来自分类Dev

如何在超时后取消任务等待

来自分类Dev

即使忽略了CancelledError,如何取消任务执行?

来自分类Dev

任务取消在RxJava中如何工作?

来自分类Dev

如何取消任务,但要等到完成?

来自分类Dev

如何从客户端取消异步任务

来自分类Dev

如何使用标签主机取消异步任务

来自分类Dev

如何取消并发的繁重任务?

来自分类Dev

如何跟踪任务在取消之前花费的时间

来自分类Dev

如何为已取消的任务添加延续

来自分类Dev

如何通过 ID 取消特定任务

来自分类Dev

jQuery.abort()在keyup事件上

来自分类Dev

HttpWebRequest.Abort下的请求已取消的异常