Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.171 Beiträge
 
Delphi 12 Athens
 
#6

AW: Thread herausfinden über ThreadID

  Alt 16. Dez 2013, 16:08
Im Prinzip macht das Ding nicht viel, außer eine "stille" Exception loszuwerden, welche vom Debugger ausgewertet wird. (wenn der Debugger sie kennt und drauf reagiert)
Delphi-Quellcode:
{class} procedure {TThread.}NameThreadForDebugging(AThreadName: AnsiString; AThreadID: TThreadID = TThreadID(-1));
type
  TThreadNameInfo = record
    FType: LongWord; // must be 0x1000
    FName: PAnsiChar; // pointer to name (in user address space)
    FThreadID: LongWord; // thread ID (-1 indicates caller thread)
    FFlags: LongWord; // reserved for future use, must be zero
  end;
var
  ThreadNameInfo: TThreadNameInfo;
begin
  if IsDebuggerPresent then
  begin
    ThreadNameInfo.FType := $1000;
    ThreadNameInfo.FName := PAnsiChar(AThreadName);
    ThreadNameInfo.FThreadID := AThreadID;
    ThreadNameInfo.FFlags := 0;
    try
      RaiseException($406D1388, 0, SizeOf(ThreadNameInfo) div SizeOf(LongWord), @ThreadNameInfo);
    except
    end;
  end;
end;
[edit]
Seh grade, daß wurde auch schon in dem Artikel erwähnt.
Also hatte Emba sich das von der OmniThreadLibrary raubkopiert.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (16. Dez 2013 um 16:13 Uhr)
  Mit Zitat antworten Zitat