默认VCL应用程序中的其他线程是什么,它们是否可以按目的命名?

Dar*_*ler 14 delphi multithreading

如果您创建一个基本的VCL应用程序并执行它,则会运行一些线程.它们的每个线程是什么,可以命名它们以便更容易地调试多线程应用程序?

我尝试命名所有的子线程,并且在调试时可以清楚地了解每个子线程在查看线程状态调试窗口时所做的事情.(如果一个没有命名,那将是一个提示来追踪它并命名它.)

Dav*_*nan 15

XE2中的普通32位VCL应用程序,在64位Windows 7上运行,有3个线程.主线程和两个额外的.TApplication.CreateHandle通过调用创建两个额外的线程WTSRegisterSessionNotification.如果要为它们命名,则可以枚举进程中线程并进行调用NameThreadForDebugging.

根据我的经验,跟踪应用程序中的所有线程非常困难.一旦您的应用程序变得适度复杂,那么可能会有大量的线程来来去去.我个人认为那些我没有说出来是别人的责任!

  • +1 _I我个人认为我没有将其命名为别人的责任!_ (7认同)
  • 然而,当你没有自己的名字时,他们很快就会迷失方向.所以我建议的另一条规则就是反过来; 如果它是我的,我更好地命名它或它会在渣土中丢失.如果delphi调试器甚至可以在线程所做的事情上提示,或者甚至提到这个线程首次出现的Delphi单元名称上下文,那对我来说将是一个很大的帮助. (6认同)