我正在实现别人调用的方法。如果我的方法花了很长时间,则调用者将调用nodemon app.js
。我在“方法”中启动了一些任务,如果我的线程被中止,则需要取消这些任务。
我目前猜想我有超时时间,并且在此时间间隔后取消任务。超时并不总是相同的,这取决于在我的方法之前执行的操作。
有没有办法将我的任务与该线程的生命周期联系起来?
更新
为防止进一步的评论,我不应该使用Thread.Abort()
,这是处理中止(我没有叫过,不能更改)的代码:>
Thread.Abrot()
我使用 using (var cancelationTokenSource = new CancellationTokenSource())
{
try
{
DoWork(cancelationTokenSource.Token);
}
catch (ThreadAbortException)
{
cancelationTokenSource.Cancel();
throw;
}
}
而不是CancelationToken
答案 0 :(得分:0)
您可以处理ThreadAbortException进行清理,包括在必要时中止其他线程。
void MyThreadProc()
{
try
{
//Do interesting things
}
catch ( ThreadAbortException e )
{
childThread.Abort();
}
}