如何访问Delphi 2010中的"NameThreadForDebugging"

Cha*_*iga 5 delphi delphi-2010

如何在Delphi 2010中的delphi Thread中访问"NameThreadForDebugging"?

type
  TMyThread = class(TThread)
  protected
    procedure Execute; override;
    procedure UpdateCaption;
  end;

implementation

procedure TMyThread.UpdateCaption;
begin
  Form1.Caption := 'Name Thread For Debugging'; 
  // how I get 'TestThread1' displayed in the caption  
end;


procedure TMyThread.Execute;
begin
  NameThreadForDebugging('TestThread1');
  Synchronize(UpdateCaption); 
  Sleep(5000);
end;
Run Code Online (Sandbox Code Playgroud)

Rob*_*edy 13

NameThreadForDebugging顾名思义,该函数仅用于调试.如果要为其他目的跟踪名称,请在线程对象中保留一个字段并将名称存储在那里.使用该字段命名线程并按需填充表单的标题.

没有用于检索线程名称的API,因为线程在API级别没有名称.NameThreadForDebugging引发一个特殊的异常,IDE将其识别为"命名此线程"异常.它看到异常(因为它是一个调试器),在它自己的内部调试数据结构中记下线程的名称,然后允许应用程序继续运行.应用程序捕获并忽略该异常.

但是,数据传输是单向的.应用程序可以通过异常向调试器发送信息,但调试器无法发回数据.操作系统对一切都没有注意到.对于操作系统,它就像任何其他异常一样.

  • 作为一个小附录,使用这种方法进行线程命名_是IDE中的一种约定.特别是,Visual Studio也会选择它. (3认同)