![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Привет всем!
Проблема такая. Создаю из VCL поток, выполняю в нем действия, затем в VCL уничтожаю этот поток. Ошибок никаких нет, но потом попробовал обращаться к переменной этого потока, чтение и запись происходит, хотя поток был уничтожен. Почему так? Создаю так: Код:
procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin if (OpenDialog1.Execute) and (OpenDialog1.Files.Count > 0) then begin Data.Clear; ReadThread:=TReadThread.Create(OpenDialog1.Files, @Data); ReadThread.FreeOnTerminate:=False; ReadThread.OnTerminate:=FinishedRead; ReadThread.Resume; for i:=0 to OpenDialog1.Files.Count-1 do Memo1.Lines.Add(OpenDialog1.Files[i]); end; end; Уничтожаю так: Код:
procedure TForm1.Timer1Timer(Sender: TObject); begin if Assigned(ReadThread) then begin if not ReadThread.Terminated then begin ProgressBar1.Max:=ReadThread.ProgressEnd; ProgressBar1.Position:=ReadThread.Progress; end else begin ReadThread.Free; ProgressBar1.Position:=0; end; end end; |