Re[6]: TService, TServiceThread, DLL
От: Danchik Украина  
Дата: 23.05.05 19:01
Оценка:
Здравствуйте, Strannic, Вы писали:

S>Не сочтите совсем за деревянного, но что-то в этой жизни я безвозвратно упустил....

S>Бипы в ДЛЛ, а как я понимаю и выполнение ее, идут лишь в случае если повесить после запуска потока месадж. Т.е. пока висит месадж плагин крутиться, и как бы работает, но как только я его закрою — все — обработка его завершается. Почему??? Т.е. ДЛЛ работает пока явно держать систему на диалоге? Понимаю, что не так, а в чем тогда дело?
S>Даже если я просто вешал пустой цикл после вызова функции из ДЛЛ, то работа с этой ДЛЛ (бипы по таймеру) прекращалась.

Поток заканчивает свою работу после того как выходит из метода Execute — надеюсь это понятно.

Возьми класс который я тебе написал перед этим.
Сделай так:

procedure TPluginThread.MyMessage1(var Message: TMessage);
begin
  StartPlugin
end;

procedure TPluginThread.MyMessage2(var Message: TMessage);
begin
  StopPlugin;
  Terminate;
end;


{На старте сервиса}
.......

  FMyThread := TPluginThread.Create (True);
  FMyThread.Resume;

  PostMessage (MyThread.WndHandle, MY_MESSAGE1, 0, 0);

....

{На остановке сервиса}

  if FMyThread <> nil then 
    SendMessage (MyThread.WndHandle, MY_MESSAGE2, 0, 0); { дождаться завершения }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.