![]() |
| ||
|
|
Новости |
Поиск |
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 все работало замечательно.
Как лечить?
Reindeer Moss Eater (2004-10-29 15:55:00) [81]при loadlibrary выполняется begin..end?
Чё, еще раз?
Ну давай еще один раз:
Сто раз вызови LoadLibrary - код межу begin end выполнится ровно один раз.
Digitman (2004-10-29 15:54:00) [82]
> dms_main © (29.10.04 15:48) [83]
ерунду не городи.
ставь брейкпойнты на строчках
c:=a*b;
и
thread:=TMyThread.create(2,2);
и лови эти брейкпойнты !
и попробуй только сказать, что ни один из них не "ловится"
dms_main (2004-10-29 15:53:00) [83]
> Который поток первый загрузил DLL - того и тапки.
> Для него и будет выполнен код между begin/end.
>
> Остальные отдыхают.
это все понятно - begin..end - вызывается 1 раз
при loadlibrary выполняется begin..end? креатится трэд, прыгает на Waitfor и ждет пока тред завершится - а метод execute в трэде так и не вызывается.... :-(
Reindeer Moss Eater (2004-10-29 15:50:00) [84]Который поток первый загрузил DLL - того и тапки.
Для него и будет выполнен код между begin/end.
Остальные отдыхают.
Добрый дядька (2004-10-29 15:48:00) [85]>dms_main
Вопрос:
Зачем нужна такая библиотека, которая загружается в приложение, выполняя код один раз, затем висит, занимая ресурсы?
dms_main (2004-10-29 15:48:00) [86]ДА именно так
Делаю LoadLibrary - креатиться, а execute не вызывается - из-за этого и вся проблема.
Digitman (2004-10-29 15:46:00) [87]
> dms_main © (29.10.04 15:42) [80]
> А я что сделал?
и что ? и продолжаешь утверждать, что управление методу Execute не передается в ходе старта трэда ?
dms_main (2004-10-29 15:42:00) [88]
> просто вызови конструктор трэда в теле begin..end библиотеки.
> что этому мешает ?
А я что сделал?
begin
thread:=TMyThread.create(2,2);
thread.WaitFor;
end.
dms_main (2004-10-29 15:41:00) [89]
> Так ведь работает уже
с экспортом - да ,а без экспорта - нет.
Я и спросил можно ли без экспорта и если да - то как.
Digitman (2004-10-29 15:40:00) [90]просто вызови конструктор трэда в теле begin..end библиотеки.
что этому мешает ?
dms_main (2004-10-29 15:39:00) [91]А если серьезно?
Reindeer Moss Eater (2004-10-29 15:39:00) [92]Так ведь работает уже
Reindeer Moss Eater (2004-10-29 15:37:00) [93]Все это напоминает ток-шоу с приглашенными актерами.
Но актеры эти приглашенные, надо отдать должное здешним спецам по кастингу, иногда просто гениальные попадаются.
Именно гениальные. Снимаю шляпу.
dms_main (2004-10-29 15:35:00) [94]
> Чё, пошлины экспортные давят?
ага причем сильно..... :-))
Reindeer Moss Eater (2004-10-29 15:34:00) [95]как заставить это работать без экспорта?
Чё, пошлины экспортные давят?
dms_main (2004-10-29 15:33:00) [96]
> да не будет это работать как положено !
> см. [63]
с экспортом уже работает...
dms_main (2004-10-29 15:32:00) [97]
> То, что кто-то до сих пор с ручника не снялся.
- это точно......
Может объясните????
мне собственно и надо 1 раз , а не 2 и не 10.....
как заставить это работать без экспорта?
Digitman (2004-10-29 15:31:00) [98]
> все заработало
да не будет это работать как положено !
см. [63]
> реально ли запустить этот трэд в begin..end библиотеки
запустить любой код реально !
только вот будет ли он (конкретный твой код) делать то, что от него ожидается - это еще бабушка надвое сказала ...
Reindeer Moss Eater (2004-10-29 15:28:00) [99]Реально.
Одинраз за все время существования процесса.
dms_main (2004-10-29 15:27:00) [100]
> Reindeer Moss Eater © (29.10.04 15:25) [66]
> и что из этого следует???
>
> То, что кто-то до сих пор с ручника не снялся.
весь день на нервах , так что уж извиняйте.... :-)