我有一个来自我的供应商的DLL,在关闭其内部线程时遇到问题,每当我调用他们的Close / Dispose方法时都会创建一个ThreadAbortException。但是,Close / Dispose调用返回正常,所以我怀疑异常被捕获但未在DLL中处理。
如果没有报告错误并由供应商修复,我可以自行关闭线程吗?我试图看看是否可以使用以下代码识别线程:
ProcessThreadCollection threads = Process.GetCurrentProcess().Threads;
for (int i = 0; i < threads.Count; i++)
{
ProcessThread pt = threads[i];
Debug.WriteLine($"{i+1}: ID: {pt.Id}, ");
}
但我还没有找到我想要的确切话题。我使用Debug Thread视图知道它的位置,但我无法通过C#代码找到该位置。
是否可以在DLL中找到该线程然后以某种方式尝试终止该线程,以便关闭时应用程序不会挂起?