![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Dll и TThread [D5, D7, WinXP]
dms_main © (2004-10-29 10:02:00)
Страницы: < 1 2 3 4 5 6 7 8 9 >
Уважаемые мастера, обнаружил такой глюк.
Есть класс на основе стандартного Tthread,
креатится так:
constructor tmythread.create;
begin
inherited create(false);
end;
Проблема в том , что в dll невызывается execute, хотя в console Application все работало замечательно.
Как лечить?
dms_main (2004-10-29 10:52:00) [141]
> В общем так.
> Твоя критическая секция - полный бред.
это для тебя бред
я туда messagebox и MessageBeep($FFFFFFFF) вставлял пофиг...
дело не в том бред или нет - там все проверено....
дело в том что метод create вызывается, а execute нет....
вот где загвоздка....
Reindeer Moss Eater (2004-10-29 10:50:00) [142]Обсуждается какой-то мифический несуществующий код.
На кофейной гуще и то эффективнее гадать получается.
Reindeer Moss Eater (2004-10-29 10:49:00) [143]constructor tmythread.create(drive:char);
begin
inherited create(false);
end;
было б в нем дело......
И где сохранение параметра в классе?
Reindeer Moss Eater (2004-10-29 10:47:00) [144]В общем так.
Твоя критическая секция - полный бред.
А что бы убедиться, что Execute все же вызывается, вставь первой строкой в него:
with TFileStream.Create(Format('%d-log.txt',[GetCurrentThreadID]),fmCreate) do
try
WriteBuffer('А все таки она вертиться',24);
finally
Free;
end;
dms_main (2004-10-29 10:43:00) [145]
> Да пофик чар она или стринг!
> Переменная это или член класса потока?!
член класса потока - естественно...
Reindeer Moss Eater (2004-10-29 10:42:00) [146]Drive : char - смотри след. пост
Да пофик чар она или стринг!
Переменнаяэто или член классапотока?!
dms_main (2004-10-29 10:40:00) [147]
> Что такое Drive? Поле класса или переменная модуля?
Drive : char - смотри след. пост
> И нафик тогда там критическая секция которая создается при
> входе и уничтожается при выходе?
> Кого она синхронизирует?
пременная threadcount:integer - счетчик трэдов...
и вообще мы от темы ушли - дело не в том что выскакивает ошибка - дело в том что execute метод не вызывается вообще.....
Reindeer Moss Eater (2004-10-29 10:37:00) [148]Это что? код Execute?
И нафик тогда там критическая секция которая создается при входе и уничтожается при выходе?
Кого она синхронизирует?
Что такое Drive? Поле класса или переменная модуля?
В общем бред какой-то.
И где все же передается имя файла?
dms_main (2004-10-29 10:34:00) [149]
constructor tmythread.create(drive:char);
begin
inherited create(false);
end;
было б в нем дело......
dms_main (2004-10-29 10:33:00) [150]
var
List:textfile;
assignfile(list,drive+'.txt');
rewrite(list);
FindFile(drive+':\round.txt');
closefile(list);
checkList:=TStringList.Create;
checklist.Duplicates:=dupIgnore;
checklist.Sorted:=true;
checkList.LoadFromFile(drive+'.txt');
checklist.SaveToFile(drive+'.txt');
checklist.Clear;
parseFile(drive+'.txt');
end;
mycountsection:=TcriticalSection.Create;
mycountsection.Enter;
try
threadcount:=threadcount-1;
finally
mycountsection.Leave;
mycountsection.Free;
end;
Reindeer Moss Eater (2004-10-29 10:30:00) [151]имя файла предается трэду через параметр в креате.
Что-то я не вижу, что передается.
Читая твой первый постинг.
Reindeer Moss Eater (2004-10-29 10:29:00) [152]Код давай уже, да?
dms_main (2004-10-29 10:28:00) [153]имя файла предается трэду через параметр в креате.
в каждом трэде - уникальное
Reindeer Moss Eater (2004-10-29 10:26:00) [154]хотя в console Application все работало замечательно.
Глобальные переменные тому виной.
Как пить дать.
Имя файла например.
Reindeer Moss Eater (2004-10-29 10:25:00) [155]Итог файл создан но незаполнен.
Создается один файл, а execute пишет в другой.
Reindeer Moss Eater (2004-10-29 10:24:00) [156]код Execute показывай
dms_main (2004-10-29 10:23:00) [157]ну насчет дебага : при креате создается файл (свой для каждого трэда),при execute он заполняется. Итог файл создан но незаполнен.
Reindeer Moss Eater (2004-10-29 10:21:00) [158]Либо все таки не вызван конструктор.
Код вызова констсруктора написан, но он не вызывается.
Reindeer Moss Eater (2004-10-29 10:20:00) [159]Оптимизация или неправильный "дебаг"
dms_main (2004-10-29 10:18:00) [160]дебагом