|
Функции Resume- и SuspendThread
Строятся параллельно две синусоиды (Delphi)...
Два потока:
procedure StartThread1;
var thrid:DWord;
begin th1:=CreateThread(nil,0,@thr1,nil,0,thrid); end;
procedure StartThread2;
var thrid:DWord;
begin th2:=CreateThread(nil,0,@thr2,nil,0,thrid); end;
procedure TForm1.FormCreate(Sender: TObject);
begin
...
startthread1;
startthread2;
suspendthread(th2);
...
end;
Сами функции:
function thr1:byte;
begin
y:=55+round(50*sin((x+dx)/25));
y1:=55+round(50*sin(x/25));
form1.image1.Canvas.Pen.Color:=cllime;
form1.image1.Canvas.MoveTo(599,y);
form1.image1.Canvas.LineTo(598,y1);
resumethread(th2);
suspendthread(th1);
end;
function thr2:byte;
begin
y:=65+round(50*sin((x+dx)/25));
y1:=65+round(50*sin(x/25));
form1.image1.Canvas.Pen.Color:=clyellow;
form1.image1.Canvas.MoveTo(599,y);
form1.image1.Canvas.LineTo(598,y1);
form1.image1.Canvas.CopyRect(r2,form1.image1.Canvas,r1);
form1.image1.Canvas.Pen.Color:=clactivecaption;
form1.image1.Canvas.MoveTo(599,0);
form1.image1.Canvas.LineTo(599,121);
x:=x+dx;
resumethread(th1);
suspendthread(th2);
end;
Проблема:
Один раз проходит, затем останавливается и не двигается...
Продолжается построение только если, к примеру в таймере, опять сделать:
startthread1;
startthread2;
Так и должно быть?
__________________
Тиха украинская ночь, но сало надо перепрятать!!!
Последний раз редактировалось Kuzmich; 23.03.2005 в 18:49.
|