Показать сообщение отдельно
Старый 23.03.2005, 18:46     # 1
Kuzmich
:::AAK:::
 
Аватар для Kuzmich
 
Регистрация: 25.01.2004
Сообщения: 915

Kuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех ГуруKuzmich Отец (мать) всех Гуру
Функции 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.
Kuzmich вне форума