![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Indy TCPServer
Frodo44 © (2006-04-15 11:55:00)Задача: при получении команды от клиента сервер должен открыть в ворде документ.
uses
...Word2000,IdComponent, IdTCPServer....
procedure TMainForm.IdTCPServer1Execute(AThread: TIdPeerThread);
var
Ss:String;
DocName:OleVariant;
begin
DocName:='C:\boot.doc';
try
with AThread.Connection do
begin
Ss:=ReadLn();
if Ss='Get' then
begin
WordApplication1.Documents.Open(DocName,EmptyParam, EmptyParam, EmptyParam,EmptyParam,EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
end;
....
Проблема такая что при подключении клиента к серверу он создает поток.При получении команды от клиента сервер пытается внутри потока запустить еще один поток для открытия вордовского документа.
Как на время остановить или закрыть поток созданный сервером и передать управления для работы с вордом
Eraser (2006-04-16 01:24:00) [1]
> Frodo44 (15.04.06 11:55)
Самый логичный вариант - не создовать доп. поток для работы с вордом, а работать в AThread: TIdPeerThread.
Если уж так приспичило создать второй поток, то после его создания можно вызвать метод TThread.WaitFor.
ЗЫ в вашем коде не вижу где создаётся доп. поток внутри серверного потока.