Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调试C中的线程池#_C#_Visual Studio_Debugging - Fatal编程技术网

C# 调试C中的线程池#

C# 调试C中的线程池#,c#,visual-studio,debugging,C#,Visual Studio,Debugging,我想在调试Visual C时观察线程池#在不更改代码的情况下(程序已在运行)我可以向监视中添加代码吗?也许我在调试时要求使用Threadpool.AvailableThreads方法。我在VisualStudio2008中开发 编辑:我刚刚发现,在我的线程中(即,在我放入线程池的方法中),执行了mysql查询,它们占据了线程池。我不清楚您到底想要监视什么。在VS中,“线程”窗口将显示所有线程,通过在线程之间切换,您可以监视它们各自的调用堆栈。如果您想要更多的细节,您可能需要查看WinDbg,它可

我想在调试Visual C时观察线程池#在不更改代码的情况下(程序已在运行)我可以向监视中添加代码吗?也许我在调试时要求使用Threadpool.AvailableThreads方法。我在VisualStudio2008中开发


编辑:我刚刚发现,在我的线程中(即,在我放入线程池的方法中),执行了mysql查询,它们占据了线程池。

我不清楚您到底想要监视什么。在VS中,“线程”窗口将显示所有线程,通过在线程之间切换,您可以监视它们各自的调用堆栈。如果您想要更多的细节,您可能需要查看WinDbg,它可以让您检查更多的细节(尽管不像VS那么容易)

编辑:回答评论中的问题。这是一种简化,但通常线程池管理许多用于运行不同任务(如QueueUserWorkItem)的线程。线程池中的线程没有什么特别之处,只是它们由线程池管理。这样做的好处是线程可以重用。创建新线程是一项昂贵的操作,因此通过重用线程,成本可以分摊


线程池不处理主线程,也不处理使用thread类创建的任何其他线程。

如果无法中断执行流,则可以添加条件和消息,以便在输出窗口中看到它的运行情况。类似地,您可以添加/logs以查看结果。单击链接以查看更多详细信息。

是否可以使用该窗口进行直接调试?我想知道的是,threadpool到底管理哪些线程?程序的所有线程还是仅由QueueUserWorkItem启动的线程?