2012-11-11 28 views
1

我试图放弃一个内部创建线程的任务。 问题是内部线程试图访问已经处理的资源(因为父任务已被取消),并导致未处理的异常。中止一个内部创建一个新线程的任务会导致一个UnhandledException

创建线程的代码是一个'黑盒子',一个外部DLL,所以我不能通过它CancellationToken左右。

我能做些什么来使任务中止其内部线程?或者这种情况的解决方案是什么?

感谢

+2

调度程序管理的TPL中的线程,它从池中获取线程。如果你的任务创建了新的线程,你的“黑匣子”必须提供API来管理/控制它的线程。 –

回答

0

如果你不能管理自己的线程,那么你可以做的最好的是处理异常。在黑盒子电话中试一试,并在自己的代码中做出适当的回应。

如果你可以,我会抱怨黑箱的提供者。他们应该给你适当的API来使用他们的工具。

+0

我试图实现超时 - 我愿意在一段时间后停止程序。为了实现它,我在一个不同的任务中执行程序,然后停止它从主线程。有更好的方法来实现它吗? – imriqwe

+0

如果你在另一个任务上运行它,你可以调用task.Wait(timespan),它会在一段时间后超时。 –

相关问题