Определение количества приостановок (suspend) потокаDelphi , Компоненты и Классы , ПотокиОпределение количества приостановок (suspend) потока
Автор: Эдгар { **** UBPFD *********** by delphibase.endimus.com **** >> Определение количества приостановок (suspend) потока Зависимости: НЕТУ Автор: Эдгар, Songoku@tut.by, Berlin Copyright: Copyright DPRSystem 1999-2004 by x-ssg Дата: 29 февраля 2004 г. ***************************************************** } function NtSuspendThread(ThreadHandle, PreviousSuspendCount: DWORD): DWORD; stdcall external 'NTDLL.DLL'; function NtResumeThread(ThreadHandle, SuspendCount: DWORD): DWORD; stdcall external 'NTDLL.DLL'; ..... function GetSuspendCount(Thread: DWORD): DWORD; var tmp: ^DWORD; begin Result := 0; if GetCurrentThread <> Thread then begin // Если в параметре наш поток то тогда возвращает 0, то есть поток работает if NtSuspendThread(Thread, dword(@tmp)) <> 0 then Result := Dword(-1) else // Останавливаем поток. И сохраняем значение PreviousSuspendCount в Result Result := dword(tmp); NtResumeThread(Thread, dword(@tmp)); // Возобновляем работу потока end; end; // В результате находится количество "остановок" потока. // Если результат 0 - то значит поток работает! Программа на Delphi! Код определяет функцию Вот подробное описание кода:
Функция возвращает DWORD-значение, представляющее количество раз, когда поток был приостановлен. Возвращаемое значение 0 означает, что потокcurrently запущен. Замечание: код использует функции Windows API и требует наличия библиотеки NTDLL.DLL на системе. Функция GetSuspendCount позволяет определить количество приостановок (suspend) потока, проверив его статус на работу или остановку. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |