जब आप अपने बीडीएस में टूल पैलेट का उपयोग करके टीटीएचड वंश बनाते हैं, तो आप थ्रेड के लिए एक नाम प्रदान कर सकते हैं। ऑटो-जेनरेट कोड यहां है। तुम बस निष्पादित विधि में SetName() फ़ंक्शन को कॉल करें और धागा इस विधि बुला अजीब तरह से एक तरह का में एक नाम दिया जाता है ...डेल्फी में नामित धागे - इसके लिए क्या है?
{$IFDEF MSWINDOWS}
type
TThreadNameInfo = record
FType: LongWord; // must be 0x1000
FName: PChar; // 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;
{$ENDIF}
{ TTestThread }
procedure TTestThread.SetName;
{$IFDEF MSWINDOWS}
var
ThreadNameInfo: TThreadNameInfo;
{$ENDIF}
begin
{$IFDEF MSWINDOWS}
ThreadNameInfo.FType := $1000;
ThreadNameInfo.FName := 'ThreadName';
ThreadNameInfo.FThreadID := $FFFFFFFF;
ThreadNameInfo.FFlags := 0;
try
RaiseException($406D1388, 0, sizeof(ThreadNameInfo) div sizeof(LongWord), @ThreadNameInfo);
except
end;
{$ENDIF}
end;
मैं यह वास्तव में उपयोगी पाते हैं डिबगिंग आप नहीं देख सकते हैं के लिए के दौरान केवल टीआईडी, लेकिन थ्रेड नाम भी इस तरह से असाइन किए गए हैं। आप जानते हैं कि कौन सा धागा है जिसके लिए धन्यवाद।
कृपया मुझे बताएं, हालांकि, अगर नाम दिया गया नाम किसी भी तरह से पहुंचा जा सकता है। क्या इसे थ्रेड के हैंडल के आधार पर पढ़ा जा सकता है? या इसे किसी अन्य प्रक्रिया द्वारा प्रक्रिया के बाहर 'बाहर' भी पढ़ा जा सकता है? आप जानते हैं, ऐसे अनुप्रयोग हैं जो आपकी प्रक्रियाओं और उनमें काम कर रहे धागे सूचीबद्ध करते हैं। क्या यह नाम इस तरह के ऐप्स के लिए सुलभ होगा?
धन्यवाद!
डीबगर में थ्रेड नाम WHILE को सेट करने के लिए किसी को भी खोजने के लिए, यह docwiki विषय में मदद करनी चाहिए: मैन्युअल रूप से: http://docwiki.embarcadero.com/RADStudio/Seattle/en/Naming_a_Thread_While_Debugging कोड में: http://docwiki.embarcadero.com/Libraries/Seattle/en/System.Classes.TThread.NameThreadForDebugging –