我正在实现一个由其他人调用的方法。如果我的方法需要很长时间,调用者将调用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] 删除。
我来说两句