Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Пачаму виснет


Автор: Garabar 23.9.2004, 13:34
Драсти.
Проблема следующая..
Програма запускает екзе приложение используя ShellExecute(); причем когда это происходт несколько раз(ессенно после того как запущенное приложение закроица) форма из которой это вызаваица виснет... хотелось бы послушать версии происходящего...
Цпасибо

Автор: _hunter 23.9.2004, 13:42
судя по описанию проблемы у тебя контроллер памяти не совсем корректно работает с первым банком
возможным источником проблемы является ATA-контроллер
поэтому рекомендую отключить все жесткие диски и проверить работу в таком режиме

С уважением...





P.S.
если тебе нужен нормальный ответ -- приведи код программы

Автор: AgereS 23.9.2004, 13:47
biggrin.gif biggrin.gif biggrin.gif

_hunter
А я читаю начало твоего ответа и твоя репутация в моих глазах начала с неимоверной скоростью ползти вверх. Я уж подумал, что всё действительно так как ты говоришь.

Автор: Garabar 23.9.2004, 14:16
Вот часть кода....
Код
procedure TForm2.Button1Click(Sender: TObject);
begin
    Saveconf;
    if form1.FH=false then
    Begin
         FlgGo:=true;  form1.FH:=true;
         ShellExecute(Form2.Handle, nil, 'D:\demohell.exe', nil, nil, SW_minIMIZE);
         Thread1:=Exper.Create(false);
         Thread1.Priority:=tplowest;

         Button1.Caption:='ABORT!';
    end else
    Begin
          form1.FH:=False;
          PortData(0);
          Button1.Caption:='GO!';
     End;

end;

Суть в том что это екзешная прога выполняит матание шагового движка и считываит данные с АЦП а Thread1 изымаит данные из файла созданного demohell.exe и записываит их массив который в дальнейшем используеться для всяких нужд... form1.FH это флаг который принудительно завершаит трейд, а PortData(0) это засылка в ЛПТ, сообщает demohell.exe о том что ей пара бы завершиьтся...
Браблема в том что после завершения demohell.exe и завершения трейда повторный вызов влечет за сабой зависание Tform2. Воть такая бяда....

Автор: _hunter 23.9.2004, 21:15
что здесь можно сказать...
во-первых: очень информативный код smile.gif
во-вторых: exe-шники лучше _запускать_ с помощью CreateProcess() -- она не _зависает_
ну и в-третьих: пройдись debuger' ом, посмотри место зависания ( IMHO оно в одной из указанных в коде функций ( Saveconf / PortData ) )

Автор: Guest 24.9.2004, 08:06
Application.ProcessMesanges

Автор: Garabar 24.9.2004, 17:32
Спасибо за совет
Цитата
ну и в-третьих: пройдись debuger' ом, посмотри место зависания ( IMHO оно в одной из указанных в коде функций ( Saveconf / PortData

Она вообщем то не то что бы зависаит это выглядит так как будто форма начинаит делать фиг знаит чаго в реальном времени когда делаишь иё активной...

Автор: SantaXP 24.9.2004, 17:34
Хм... А чем WinExec не подошёл??? hmmm.gif

Автор: Атос 24.9.2004, 19:12
Не очень понимаю - попробуй остановить процесс через аттач-паузу.... и посмотри чего делает/

Автор: _hunter 25.9.2004, 12:12
Цитата(Garabar @ 24.9.2004, 17:32)
Она вообщем то не то что бы зависаит это выглядит так как будто форма начинаит делать фиг знаит чаго в реальном времени когда делаишь иё активной...

раньше говорить нужно было smile.gif
Цитата(SantaXP @ 24.9.2004, 17:32)
А чем WinExec не подошёл?

тем, что он устарел smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)