c# - 在Visual Studio 2008中调试多线程C#-C++/CLI-C++解决方案: What are these threads?

标签 c# visual-studio-2008 multithreading debugging

我继承了一个包含三个级别的代码的项目。最低层是与硬件交互的 native C++。这是成熟,稳定和经过测试的。中间代码是C++/CLI,它与包含UI元素和一些其他功能的顶级C#代码进行交互。该C#代码不完整,已被迫着急进行开发:它经常崩溃,不符合特定目的。我的任务是调试并完成它。

我正在使用VS 2008逐步浏览多线程代码,以了解从何处开始该项目。一个简单的问题:在``线程''窗口中,我有两个命名线程:一个与某些基础硬件(即C++代码)通信的Worker线程和一个User Interface线程。

但是,单步执行代码,有许多工作线程没有名称,也没有与之相关的调用堆栈,这些线程看起来似乎是随机的。它们在“调试位置”工具栏中没有条目,并且在选择“在源中显示线程”时,它们在代码中似乎不可见。

它们是什么,我应该关注它们吗?它们似乎不是来自 native 代码(因为它使用Boost进行线程化,这在调用堆栈中很明显)。冻结它们或更改其优先级似乎没有任何效果。

在此之前,我还没有调试过这种复杂的多线程代码,因此请多多指教!

最佳答案

除了应用程序的线程外,.NET应用程序中还有一些其他线程。运行时使用专用线程来运行终结器。正如driis指出的那样,您可能还会看到线程池线程。调试器也将启动一个线程。如果您使用的是vshost,则会得到a bit of overhead an additional threads

关于c# - 在Visual Studio 2008中调试多线程C#-C++/CLI-C++解决方案: What are these threads?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3264245/

相关文章:

c# - 通过 C# 插入 MySQL

c# - 动态调用具有复杂参数的方法 (C#)

c++ - 从工作线程更新 QtCharts 的正确方法?

循环中的 C# 任务永远不会结束

c# - C# 中 ionic zip 的替代品是什么?

c# - 如何使用 LookRotation 根据手的位置旋转对象?

c++ - 按包含成员 vector 的值返回对象是个坏主意吗?

c# - 如何在 Visual Studio 的 R# 单元测试 session 窗口中通过单元测试输出彩色文本?

visual-studio-2008 - 如何将整个文件夹添加到 Visual Studio 2008 中的安装项目

java - 生产者-消费者场景。我有一个生产者和多个消费者