Показать сообщение отдельно
  #19  
Старый 12.03.2014, 18:18
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от novashdima
И где эта безопасная точка находится?
Ну это когда поток отпустит все критические секции и другие объекты.
Например здесь:
Код:
procedure MyThread.Execute;
begin
//  inherited; Это здесь не нужно
  while not Terminated do
  begin
    // Безопасная точка - проверяем не нужно ли приостановиться (Suspend)
     Analys;
  end;
end;
Цитата:
Сообщение от novashdima
При выполнении в форе произойдет остановка? Как сообщить?
Сделать еще один флаг, и вместо фора поставить вайл с проверкой флага? Просто одно действие в форе может выполняться достаточно долго и будет впечатление что или прога зависла или вообще никак не реагирует на кнопку.
Можно использовать для оповещения например сигнал TEvent, а проверять не приостановился ли поток через TEvent.WaitFor(100).
Цитата:
Сообщение от novashdima
Добавлю проверку, но вообще по логике программы не должна вызывать процедура обработки, если данные пустые.
Всегда лучше перестраховаться
Цитата:
Сообщение от novashdima
Так вот я и создаю стринглист при создании формы и убиваю при уничтожении формы, посмотрите на исходник, который я приложил.
Если так, то вот этого делать не нужно:
Цитата:
Сообщение от novashdima
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  try
.....
    ******
  except
    if Assigned(StringList) then
      FreeAndNil(StringList);
    *****
  end;
end;
Т.е. при запуске приложения создали при завершении приложения разрушили, а посреди никаких созданий и разрушений быть не должно, в том числе и при ошибках.
Ответить с цитированием