Как делает один доступ 'NameThreadForDebugging' в Delphi 2010

Открытый исходный код: сфинкс CMU

условно-бесплатное программное обеспечение: http://www.e-speaking.com/ (Windows)

Commercial: дракон NaturallySpeaking (Windows)

5
задан Charles Faiga 28 September 2009 в 13:54
поделиться

3 ответа

Функция NameThreadForDebugging , как следует из названия, предназначена только для отладки. Если вы хотите отслеживать имя для других целей, зарезервируйте поле в объекте потока и сохраните его там. Используйте это поле для наименования потока и для заполнения заголовка вашей формы по запросу.

API для получения имени потока отсутствует, потому что потоки не имеют имен на уровне API. NameThreadForDebugging вызывает специальное исключение, которое IDE распознает как исключение «назовите этот поток». Он видит исключение (поскольку это отладчик), записывает имя потока в своих внутренних структурах данных отладки, а затем позволяет приложению продолжить работу. Приложение перехватывает и игнорирует исключение.

Однако эта передача данных является односторонней. Приложение может отправлять информацию отладчику через исключение, но отладчик не может отправлять данные обратно. И ОС на все не обращает внимания. Для ОС это как и любое другое исключение.

13
ответ дан 18 December 2019 в 14:48
поделиться

AFAICS Delphi supports settings the name only. You'll have to call some windows API function to get the name.

-2
ответ дан 18 December 2019 в 14:48
поделиться

Модуль DebugThreadSupport в примере Code Central ID: 21893, Named Pipes , показывает, как установить имя потока в старых версиях Delphi.

0
ответ дан 18 December 2019 в 14:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: