我正在开发一个多线程应用程序,我的一个线程被某些东西阻塞了,因此它会永远占用一些资源,比如一个文件。有没有办法找出哪个线程被阻塞,更重要的是该线程持有什么资源?
最后和往常一样,感谢您的耐心回复。 :)
--------新进展------------
由于windows平台上的所有资源都是通过“句柄”访问的。我在想是否有办法列出 .NET 线程持有的所有句柄?
最佳答案
当您创建线程时,您可以在开始之前为每个线程设置一个名称。然后您可以在调试器中使用这些来识别有问题的线程。
然后当您的程序没有关闭时,您跳转到调试器并点击暂停,然后您可以通过事件线程。 调试->Windows->线程(CTRL-ALT+H)
如果你的线程不是关键的,你只是想让系统在完成时关闭你可以设置.IsBackground在线程上,您不需要执行任何特殊操作来关闭线程,尽管这通常可能会导致您没有预料到的其他情况。
我个人也使用 System.Threading.AutoResetEvent(duration)
而不是 Sleep(duration)
因为如果我想退出,我设置 mIsRunning=false
然后设置将导致事件停止唤醒但立即退出的事件。 sleep 必须在恢复之前完成。
关于c# - 我怎样才能知道 .NET 线程占用的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2763009/