![]() |
![]() ![]() ![]() ![]() |
|
Определение количества приостановок (suspend) потокаDelphi , Компоненты и Классы , Потоки
Автор: Эдгар
{ **** UBPFD *********** by delphibase.endimus.com ****
>>
Зависимости: НЕТУ
Автор: Эдгар, 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 прямо в свой смартфон. Подпишитесь на наш
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||