Цитата:
Сообщение от 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;
|
Т.е. при запуске приложения создали при завершении приложения разрушили, а посреди никаких созданий и разрушений быть не должно, в том числе и при ошибках.