Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему такое бывает


Страницы:   1 2 3 4

r.o.o.t ©   (2007-11-02 11:48:00) 

Нород такая проблема просветите.
SrvConnection:= TSocketConnection.Create(nil);
  SrvConnection.Address:=Exec_InitSrvConnection_IP_Adrr;
  SrvConnection.Port:=Exec_InitSrvConnection_IP_Port;
  SrvConnection.ServerName:='BrsServer.BrsServer_Controller';
  SrvConnection.ServerGUID:='{AC69FABC-4752-4CF2-99E9-85CE86F99172}';
  SrvConnection.SupportCallbacks:=true;
  SrvConnection.LoginPrompt:=false;
  SrvConnection.Open;
Вот кусок кода создающий TSocketConnection который создается в потоке и конектится на MIDAS сервер трабл заключается в том что весь COM тормазится в системе WinXP  т.е. при попытки открытия *.doc *.xls документов они виснут пока из клиента необратишся к интерфейсу сервера(любому) или невыгрузишь прогу....

КАК быть??


ага   (2007-11-21 05:03:00) [1]

А ежель так?
procedure test.Execute;
var
msg: tmsg;
begin
 Excec_proc1;
 while GetMessage(...) do dispatchmessage(...)
end


r.o.o.t   (2007-11-08 12:52:00) [2]

сервак пустой просто RemoteData Modul без процедур и методов
разници нет тормазит как на рабочем так и на тестовом код потока вот
unit Unit2;

interface

uses
 Classes,SysUtils,SConnect,ActiveX,Windows;

type
 Test = class(TThread)
 private
   { Private declarations }
    SrvConnection: TSocketConnection;
   procedure Execute; override;
   Procedure Excec_proc1;
   Procedure Excec_proc2;
 protected
 public
 end;

implementation

uses Unit1;
   Procedure test.Excec_proc1;
   begin
     SrvConnection:=TSocketConnection.Create(nil);
     SrvConnection.Address:='10.107.46.188';
     SrvConnection.Port:=211;
     SrvConnection.ServerName:='Project1.test';
     SrvConnection.ServerGUID:='{5AD38E74-551A-4D32-BA46-EF5A71D886DF}';
     //SrvConnection.SupportCallbacks:=true;
     SrvConnection.LoginPrompt:=false;
     SrvConnection.Open;
   end;

   Procedure test.Excec_proc2;
   begin
      SrvConnection.Close;
   end;

procedure test.Execute;
var
Signal_:string;
begin
  Excec_proc1;
  while true do sleep(30);
end;

end.

Тормаза проявляется следующим способом при открытии допусти документов Excel Word из Outlook или через эксплорер сопровождаются висяками возможно при открытии используеьтся ShellExcute хз выложи свой код тормазит на всех клинтских машинах... где стоит WinXP и Office 2003 проект компилится в D2006


Сергей М.   (2007-11-08 08:38:00) [3]


> попробой через Excplorer открыть Excel документ


А причем здесь COM ?

Ёхель в этом случае используется не как COM-сервер, а как обычное приложение.


sniknik   (2007-11-07 19:33:00) [4]

> пришли свой код
???
"код" я взял из [52] as is, простым копированием, замены которые произвел (ну нет у меня твоего сервера) указаны в [58]. все пробы делались на этом.


r.o.o.t   (2007-11-07 18:22:00) [5]

еще заметил ососбенность после подключения к серверу подождать 30 40 сек вручную excel запускается нормально и последующие разы тоже после подключения обратится сразу то висяк гдето 50 сек потом открывается и последующие разы открывается нормально но ежели опять вызвать метод сревера опять висяк....


r.o.o.t   (2007-11-07 18:14:00) [6]

создал голый MIDAS сервер
код переделал
SrvConnection:=TSocketConnection.Create(nil);
     SrvConnection.Address:='10.107.46.188';
     SrvConnection.Port:=211;
     SrvConnection.ServerName:='Project1.test';
     SrvConnection.ServerGUID:='{5AD38E74-551A-4D32-BA46-EF5A71D886DF}';
     //SrvConnection.SupportCallbacks:=true;
     SrvConnection.LoginPrompt:=false;
     SrvConnection.Open;

всеравно виснет


r.o.o.t   (2007-11-07 17:58:00) [7]

если да где может быть проблема??


r.o.o.t   (2007-11-07 17:57:00) [8]

пришли свой код
данная проблема на всех клиентах
у тебя подключение держиться??


sniknik   (2007-11-07 17:54:00) [9]

руками все работает, и оболочка, и ексель и ворд, и если документ открываешь, и тыкая на него из проводника и отрывая в оболочке. (т.е. подозреваю по любому)

т.е. то что у тебя "вешает" до сих пор "за кадром".


r.o.o.t   (2007-11-07 17:49:00) [10]

кончно создай документ ворд или есель и попробуй его открыть руками а не саму оболчку
кстате Excel:= CreateOleObject('Excel.Application'); работает а вот пр окрытии руками неработает ваще запутался


sniknik   (2007-11-07 17:44:00) [11]

> а ты что пробовал??
> CreateOleObject('Excel.Application');
Excel:= CreateOleObject('Excel.Application');
Excel.Visible:= true

> попробой через Excplorer открыть Excel документ
руками открывал ворд, есть разница?


r.o.o.t   (2007-11-07 17:43:00) [12]

заменил
SrvConnection.Address:='127.0.0.1';
запустил сервер локально висит


r.o.o.t   (2007-11-07 17:41:00) [13]

а ты что пробовал??
CreateOleObject('Excel.Application');
попробой через Excplorer открыть Excel документ


sniknik   (2007-11-07 17:38:00) [14]

r.o.o.t   (07.11.07 17:00) [52]
проверил. не висит.

замены
 SrvConnection.Address:='127.0.0.1'; //свой комп
 SrvConnection.ServerName:='GDBServer.GDBMetods'; //свой сервер
 SrvConnection.ServerGUID:='{384C6DAA-75AC-4E11-94EE-18443EB220C8}';


r.o.o.t   (2007-11-07 17:17:00) [15]

висяяяк


r.o.o.t   (2007-11-07 17:16:00) [16]

даа
попробуй открыть эксель или отлюк или любую программу которое использует com или ole


Сергей М.   (2007-11-07 17:08:00) [17]


> виснет


т.е. ты утверждаешь, что ф-ция

CreateOleObject('Excel.Application');

будучи вызванная после [54], не возвращает управления и намертво блокирует вызвавший ее поток ?


r.o.o.t   (2007-11-07 17:02:00) [18]

поток создаю вот так
 Testq:=Test.Create(false);
 Testq.Priority:= tpIdle;


r.o.o.t   (2007-11-07 17:01:00) [19]

виснет


r.o.o.t   (2007-11-07 17:00:00) [20]

unit Unit2;

interface

uses
 Classes,SysUtils,SConnect,ActiveX,Windows;

type
 Test = class(TThread)
 private
   { Private declarations }
    SrvConnection: TSocketConnection;
   procedure Execute; override;
   Procedure Excec_proc1;
   Procedure Excec_proc2;
 protected
 public
 end;

implementation

uses Unit1;
   Procedure test.Excec_proc1;
   begin
     SrvConnection:=TSocketConnection.Create(nil);
     SrvConnection.Address:='80.69.155.66';
     SrvConnection.Port:=211;
     SrvConnection.ServerName:='BrsServer.BrsServer_Controller';
     SrvConnection.ServerGUID:='{AC69FABC-4752-4CF2-99E9-85CE86F99172}';
     //SrvConnection.SupportCallbacks:=true;
     SrvConnection.LoginPrompt:=false;
     SrvConnection.Open;
   end;

   Procedure test.Excec_proc2;
   begin
      SrvConnection.Close;
   end;

procedure test.Execute;
var
Signal_:string;
begin
  Excec_proc1;
  while true do sleep(30);
end;

end.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо