Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.16;
Скачать: CL | DM;

Вниз

Почему такое бывает   Найти похожие ветки 

 
Сергей М. ©   (2007-11-07 16:47) [40]


> в момент вызова процедур к MIDAS


К тому же в приведенном тобой шматке кода нет ни намека на такие вызовы.


 
sniknik ©   (2007-11-07 16:48) [41]

> почему виснет весь COM в системе

сделай пример (далее смутно, обьяснить трудно (давно с мидас не работал), просто проверь, все вместе и если заработает поодиночке)

1 не трогай SIGNAL извне, лучше вообще убери
2 SrvConnection сделай переменной класса, лучше приватной чтобы доступа извне не было
3 TSocketConnection.Create(nil); вместо nil подставь форму, форму сделай тут же в потоке (локальная переменная)
4 назначь парентом у SrvConnection туже созданную форму.
5 закоментарь SrvConnection.SupportCallbacks:=true;
6 вставь в Execute "пустышку" типа
procedure test.Execute;
begin
 Excec_proc1;
 while not Terrminated do
    sleep(30);
 Excec_proc2;
end;

(CoInitialize/... в принципе можно убрать)

так не виснет?


 
Сергей М. ©   (2007-11-07 16:49) [42]


> дай пару реализаций  вызова процедур из потока


Что значит "дай" ?! Да еще и "пару" ?)

Вызов процедуры - он и в Африке вызов процедуры. Иначе как не из потока процедуру вызвать невозможно)


 
r.o.o.t   (2007-11-07 16:49) [43]

да я просто нестал описывать их но суть остается преждней....


 
Сергей М. ©   (2007-11-07 16:51) [44]


> я просто нестал описывать


Ну раз ты в них непокобелимо уверен, продолжай париться)


 
sniknik ©   (2007-11-07 16:51) [45]

и еще кстати проверка, без которой все выше бессмысленно, сделать Excec_proc1; Excec_proc2; для основного потока, добиться работы при их вызове. (и форму тогда не надо создавать, главную подставить)


 
sniknik ©   (2007-11-07 16:53) [46]

> но суть остается преждней....
суть меняется с каждым измененным/добавленным фактом...

сравни.
комп ни с того ни сего перестал работать. почему?

уронил на комп гирю в 24кг и он перестал работать. почему?


 
r.o.o.t   (2007-11-07 16:53) [47]

sniknik ©   (07.11.07 16:48) [41]
> почему виснет весь COM в системе
procedure test.Execute;
begin
Excec_proc1;
while not Terrminated do
   sleep(30);
Excec_proc2;
end;
всеравно виснет

Сергей М. ©   (07.11.07 16:49) [42] вот код который незагружает планировщик проблема остается почему??


 
Сергей М. ©   (2007-11-07 16:56) [48]


> r.o.o.t   (07.11.07 16:53) [47]


Убери колбэки, убери ВСЕ лишнее,т приведи результ.код, а там посмотрим ...


 
sniknik ©   (2007-11-07 16:57) [49]

> всеравно виснет
и это все что ты сделал? из того что я написал.

p.s. вот это сразу поменяло смысл нашего общения.


 
r.o.o.t   (2007-11-07 16:57) [50]

щас даю код


 
Сергей М. ©   (2007-11-07 16:58) [51]


>    function Connect:integer;external "Project2.dll" name
> "Connect";
>    function Connect1:integer;external "Project2.dll" name
> "Connect1";
>


А это чего такое ?


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

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.


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

виснет


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

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


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


> виснет


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

CreateOleObject("Excel.Application");

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


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

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


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

висяяяк


 
sniknik ©   (2007-11-07 17:38) [58]

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:41) [59]

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


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

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


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

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

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


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

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


 
sniknik ©   (2007-11-07 17:54) [63]

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

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


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

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


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

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


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

создал голый 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 18:22) [67]

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


 
sniknik ©   (2007-11-07 19:33) [68]

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


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


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


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

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


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

сервак пустой просто 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-21 05:03) [71]

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



Страницы: 1 2 вся ветка

Текущий архив: 2007.12.16;
Скачать: CL | DM;

Наверх




Память: 0.61 MB
Время: 0.026 c
2-1195566507
Kolan
2007-11-20 16:48
2007.12.16
В TreeView какое событие/я происходят в TreeView при RightClickSe


15-1195127822
alex_***
2007-11-15 14:57
2007.12.16
аналог self в vb6


15-1195071418
Chelovek12345
2007-11-14 23:16
2007.12.16
Сканер сканирует рывками. HP scanjet 2400


1-1191258138
leonidus
2007-10-01 21:02
2007.12.16
Как определить слово под курсором TRichEdit


15-1195111653
ari_9
2007-11-15 10:27
2007.12.16
Что бы почитать про грамотное написание контейнеров?