2010-05-04 33 views
2

我正在开发一个多线程应用程序,并且我的某个线程被某种东西阻塞了,因此它将永远占用一些资源,如文件。有没有办法找出哪个线程被阻塞,更重要的是该线程正在维护什么资源?我怎么才能知道.NET线程占用的资源?

最后和往常一样,感谢您的耐心和答复。 :)

---------新进展----------

由于所有的Windows平台上resouces通过 “手柄” 访问。我在想如果有一种方法可以列出.NET线程持有的所有句柄?

回答

1

当您创建线程时,您可以在启动它之前为每个线程设置一个名称。然后,您可以在调试器中使用它们来识别有问题的线程。

然后当你的程序没有关闭,你跳到调试器并点击暂停,然后你可以通过活动线程。 调试 - > Windows的>主题(CTRL-ALT + H)

如果你的线程并不重要,只是想和你的系统完成后要关闭,你可以在线程上设置.IsBackground和你不需要执行任何特殊操作以使您的线程关闭,虽然这可能会导致其他您不期望的情况。

我个人也使用System.Threading.AutoResetEvent(duration)而不是Sleep(duration),因为如果我想退出,我设置了mIsRunning=false然后设置将导致事件停止唤醒但立即退出的事件。休眠必须在恢复之前完成。

相关问题