Форум: "Сети";
Текущий архив: 2003.12.04;
Скачать: [xml.tar.bz2];
ВнизГлюк Sleep в TThread Найти похожие ветки
← →
Witaliy (2003-10-05 13:24) [0]Есть процедура :
procedure TMyThread.SndMsg;
var
i: Integer;
Begin
For i:=0 To Main.MainForm.ServerSocket.Socket.ActiveConnections-1 Do
Begin
If Main.MainForm.ServerSocket.Socket.Connections[i].RemoteAddress=IP Then
Begin
Main.MainForm.ServerSocket.Socket.Connections[i].SendText(CommandsString);
End;
End;
End;
procedure TMyThread.Execute;
Begin
While Terminated=False Do
Begin
Synchronize(SendMessage);
Sleep(5000);
^^^^^^^^^^^
End;
End;
Так вот, трабл заключается в том, что если в программе происходит какой-либо Exception( не в этом потоке, а в пртоке основной программы), то функция Sleep засыпает и не просыпается, т.е. например Появляется в приложении окно с ошибкой, я нажимаю скажем OK и поток дальше не выполняется. Подскажите если кто знает в чем дело. Программа написана в Delphi 7 и работает под OS Win XP и 2000
← →
Digitman (2003-10-05 13:51) [1]procedure TMyThread.Execute;
Begin
try
...
except
.. здесь при необходимости ведем лог исключений
end
End;
← →
Witaliy (2003-10-05 14:10) [2]procedure TMyThread.Execute;
Begin
try
...
ShowMessage(0,"Before","",0);
Sleep(50000);
ShowMessage(0,"After","",0);
except
ShowMessage(0,"Except","",0);
end
End;
Сделал так. Судя по тому что сообщения нет, Except тоже не происходит у потока.
← →
DiamondShark (2003-10-05 22:31) [3]Вообще-то, поток в таком случае прибивается...
Отладчик-то на что даден? Кто мешает окошко Threads посмотреть.
← →
DiamondShark (2003-10-05 22:33) [4]{$flood+}
Пошто тему в "Сети" перенесли?
{$flood-}
← →
Digitman (2003-10-06 08:00) [5]
> Судя по тому что сообщения нет, Except тоже не происходит
> у потока.
обращение из доп.код.потока к объектам VCL, работающим с канвой, недопустимо без синхронизации с осн.код.потоком
см. Synchronize()
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.12.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c