1. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Первый товар уже в продаже: Консультация на тему ИБ от Ondrik8

    Скрыть объявление
  2. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Второй товар маркетплейса: Надёжная обфускация вашей программы от PingVinich

    Скрыть объявление

Indy Tcpserver

Тема в разделе "Delphi - Сети", создана пользователем Frodo, 15 апр 2006.

Статус темы:
Закрыта.
  1. Frodo

    Frodo Гость

    Репутация:
    0
    Задача: при получении команды от клиента сервер должен открыть в ворде документ.

    Код (Text):
    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;
    ....
    Проблема такая что при подключении клиента к серверу он создает поток.При получении команды от клиента сервер пытается внутри потока запустить еще один поток для открытия вордовского документа.

    Как на время остановить или закрыть поток созданный сервером и передать управления для работы с вордом
     
  2. zubr

    zubr Гость

    Репутация:
    0
    Код (Text):
    AThread.Suspend;//останавливаем поток
     WordApplication1.Documents.Open(DocName,EmptyParam, EmptyParam, EmptyParam,EmptyParam,EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
     WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
    AThread.Resume;//продолжаем выполнение потока
     
  3. Frodo

    Frodo Гость

    Репутация:
    0
    попробовал но никаного эффекта. все что следует после

    Код (Text):
    AThread.Suspend;
    просто не выполняется. Может это какой то глюк Indy 8 (у меня эта версия стоит)

    Можно ли из вне (не из OnExecute) вызвать Suspend? и если можно то как?
     
  4. Barmutik

    Barmutik Гость

    Репутация:
    0
    Лучше из потока ставить Ваше задание на открытие документа к примеру в основном потоке приложения и уже потом оттуда его брать и з очереди заданий и открывать...

    А с другой стороны в чём проблема что Вы из потока клиента создаёте ещё один поток ?
     
Загрузка...
Похожие Темы - Indy Tcpserver
  1. slavon-x86
    Ответов:
    3
    Просмотров:
    11.911
  2. konstin
    Ответов:
    2
    Просмотров:
    1.046
  3. erhe
    Ответов:
    7
    Просмотров:
    3.102
  4. Shouldercannon
    Ответов:
    0
    Просмотров:
    960
  5. Shouldercannon
    Ответов:
    0
    Просмотров:
    870
Статус темы:
Закрыта.

Поделиться этой страницей