Текущий архив: 2007.02.11;
Скачать: CL | DM;
Вниз2.35 bug tthread Найти похожие ветки
← →
grm © (2006-05-16 14:14) [0]в деструкторе нити (KOL) вызывается waitfor, который вызывает еще раз деструктор, закрывает дескриптор нити, и при возвращении падаем на CloseHandle(FHandle);
попробовал обнулить после закрытия дескриптор для корректной работы, но получаем дальше ошибку особождения памяти. судя по всему весь алгоритм зачем-то сильно исказили в последнее время...
в версии 2.33 такого не было.
destructor TThread.Destroy;
begin
if not FTerminated then
begin
Terminate;
> WaitFor;
end;
if (FHandle <> 0) then
begin
CloseHandle(FHandle);
end;
inherited;
end;
function TThread.WaitFor: Integer;
begin
RefInc;
Result := -1;
if FHandle = 0 then Exit;
WaitForSingleObject(FHandle, INFINITE);
GetExitCodeThread(FHandle, DWORD(Result));
> RefDec;
end;
← →
mdw © (2006-05-16 14:26) [1]В ветке http://delphimaster.net/view/11-1145208691/ обсуждали.
Я Кладову писал, но он интереса не проявил. Там что-то с RefCount напутано, примерно в версии 2.33 он и изменил обработку. Варианта два: подождать или использовать OLD_REFCOUNT. Я жду пока, юзаю 2.30.
Страницы: 1 вся ветка
Текущий архив: 2007.02.11;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.053 c