Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
ВнизПотоки-потоки Найти похожие ветки
← →
SpyBoy © (2005-07-20 23:15) [0]type
TMyThread1 = class(TThread)
private
{ Private declarations }
protected
procedure DoWork;
procedure Execute; override;
end;
Не работает:выдает сообщение:
[Error] Unit1.pas(16): Unsatisfied forward or external declaration: "TMyThread1.DoWork"
← →
Eraser © (2005-07-21 00:10) [1]SpyBoy © (20.07.05 23:15)
Приведи реализацию procedure DoWork;
← →
SpyBoy © (2005-07-21 12:11) [2]type
TMyThread1 = class(TThread)
private
{ Private declarations }
protected
procedure DoWork;
procedure Execute; override;
end;
TMyThread2 = class(TThread)
private
{ Private declarations }
protected
procedure DoWork;
procedure Execute; override;
end;
var Form1: TForm1;
T1 : TMyThread1;
T2 : TMyThread2;
implementation
procedure TMyThread1.Execute;
begin
{Пока процесс не прервали, выполняем DoWork}
while not Terminated do
Synchronize(DoWork);
end;
procedure TMyThread2.Execute;
begin
{Пока процесс не прервали, выполняем DoWork}
while not Terminated do
Synchronize(DoWork);
end;
procedure TMyThread1.DoWork;
begin
{Пытаемся победить второй процесс :-)}
Form1.CheckBox1.Checked := True;
end;
procedure TMyThread2.DoWork;
begin
{Пытаемся победить первый процесс :-)}
Form1.CheckBox1.Checked := False;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
{Если кнопка называется Stop...}
if Button1.Caption = "Stop" then begin
{Прерываем оба процесса}
T1.Terminate;
T2.Terminate;
{Изменяем название кнопки}
Button1.Caption := "Start";
{Выходим из процедуры}
Exit;
end;
{Создаем и сразу запускаем два процесса}
T1 := TMyThread1.Create(False);
T2 := TMyThread2.Create(False);
{Здесь можно поэкспериментировать с приоритетами:
T1.Priority := tpLowest;
T2.Priority := tpHighest;
}
{Переименовываем кнопку}
Button1.Caption := "Stop";
end;
← →
Digitman © (2005-07-21 12:19) [3]Кариха - в топку.
← →
Ботвин Дмитрий (2005-07-21 12:46) [4]Во первых нахрен нужен такой код?
А во вторых почему у тебя в разделе protected для двух разных потоков одна и та же процедура прописана?
Как это синхронизироваться должно то?
← →
kblc © (2005-07-21 13:11) [5]
type
TMyThread1 = class(TThread)
protected
procedure DoWork;
procedure Execute; override;
end;
procederu TMyThread1.DoWork;
begin
//
end;
← →
Digitman © (2005-07-21 13:18) [6]
> kblc © (21.07.05 13:11) [5]
эт чего такое было ?)
← →
alpet © (2005-07-21 13:20) [7]>procederu
Компилятор должно быть не понимает, что ты хотел обозначить процедуру :))
← →
alpet © (2005-07-21 13:23) [8]Бесполезный совершенно код - у тебя установка флажка все равно производится в основном потоке,а от вспомогательных толку ноль. Если сообщение BM_SETCHECK контролу посылал из каждого - такой же был бы результат.
← →
kblc © (2005-07-21 13:23) [9]не успел извиниться... я 2 ночи не спал - а помочь хотелось... прогнал я чё-то...
он писал что у него ошибка такая, как будто этой ф-ии ваще нету ;)
забейте на сегодня на немучачего меня ;)
← →
SpyBoy © (2005-07-27 16:25) [10]alpet © (21.07.05 13:23) [8]
Тогда как её осуществить через вспомогательнЫЕ
← →
Fay © (2005-07-27 18:14) [11]Как эта ветка попала в WinAPI?!
← →
alpet © (2005-07-27 18:25) [12]SpyBoy © (27.07.05 16:25) [10]
И какой тебе в итоге будет толк от этого? Флажок наверняка будет меняться еще даже до перерисовки много раз - ты визуально не уследишь что к чему.
Есть в Delphi\Demos\Threads неплохой пример "соревнования" потоков в сортировке, советую с него начать изучение работы многопоточности.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.016 c