我已经看到我的Delphi应用程序有多个线程 - 更确切地说是7个。当然我不是在创造自己的主题,而是只使用经典的#39; VCL控制。该计划闲置。它只显示主窗体。没有对话框处于活动状态,没有运行个人/ Indy / etc线程。
注1:这与Program freezes but the CPU utilization is zero
有关
注2:我刚刚意识到这些线程中有2个或3个来自调试器(当我暂停程序并调用“CPU视图”窗口时会出现额外的线程)。
答案 0 :(得分:4)
正如您在评论中看到的那样,您问题第一部分的答案很广泛。只需在Delphi XE7中创建一个新的'VCL Forms Application'项目并运行它,我在'Thread Status'视图中有4个Threads。其他人提到了TThreadedQueue
,文件对话框,VCL提示代码以及更多作为未记录线程的来源。
对于你问题的第二部分,我建议在启动时命名主线程,例如:
TThread.NameThreadForDebugging('Main Thread', MainThreadID);
正如您在评论中提到的那样,您可能无法事先为其命名,因此在现有的调试会话中,您可以临时执行此操作:
调用评估/修改窗口
MainThreadID
作为表达式进行预测,从而生成您要查找的ID。也可以使用IDE识别其他线程。双击Threads视图中的线程将打开当前的调用堆栈。略过一下,您可能已经能够判断这是一个本机Delphi线程还是外部线程。
例如,我没有创建的'未识别的' - 外部线程之一具有以下调用堆栈:
虽然我为测试目的而创建的Delphi线程具有以下特征:Delphi单元可识别: