Форум: "Основная";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];
ВнизTThread Найти похожие ветки
← →
Are you want a tea? (2002-08-04 16:06) [0]Моя программа при нажатии кнопки копирует файл с помощью CopyFile. Но при этом программа замораживается, пока не будет закончено копирование. Это не есть хорошо. И я создаю поток:
TCopyThread=class(TThread)
private
fOldFile,fNewFile:String;
public
constructor Create(OldFile,NewFile:String);
procedure Execute; override;
end;
constructor TCopyThread.Create(OldFile, NewFile: String);
begin
fOldFile:=OldFile;
fNewFile:=NewFile;
inherited Create(true);
end;
procedure TCopyThread.Execute;
begin
CopyFile(PChar(fOldFile),PChar(fNewFile),false);
end;
procedure TForm1.btnCopyClick(Sender: TObject);
begin
with TCopyThread.Create(edtOldFile.Text,edtNewFile.Text) do
Execute
end;
При этом программа всё равно замораживается. Но еслиinherited Create(true)
заменить наinherited Create(false)
а в btnCopyClick написатьTCopyThread.Create(edtOldFile.Text,edtNewFile.Text)
, то всё работает как надо. Почему так происходит?
← →
DiamondShark (2002-08-04 16:18) [1]Execute не надо вызывать
← →
TTCustomDelphiMaster (2002-08-04 16:45) [2]Are you want a tea? (04.08.02 16:06)
with TCopyThread.Create(edtOldFile.Text,edtNewFile.Text) do
Execute // Заменить на Resume
Ошибка в том что вы вызываете метод Execute не через новый поток, а в главном потоке (как обычный метод).
← →
Are you want a tea? (2002-08-04 20:45) [3]
> TTCustomDelphiMaster © (04.08.02 16:45)
Спасибо, понял.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.005 c