Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.07;
Скачать: CL | DM;

Вниз

Thread - To ALL HELP!!   Найти похожие ветки 

 
Eraser   (2002-01-21 13:00) [0]

Пишу следующий код:
var c:integer;

procedure TMicro3Thread.UpdateCaption;
begin
Form1.Caption := inttostr(c);
end;

procedure TMicro3Thread.Execute;
begin
Rab;
end;

procedure Rab;
begin
for i:=1 to 10000 do begin
inc(с);
Synchronize(UpdateCaption);
end;
end;

в Caption выводится только 1-е значение с и все хотя цикл продолжается


 
Vovochka   (2002-01-21 13:07) [1]

Form.refresh()?


 
Dimka Maslov   (2002-01-21 13:11) [2]

Rab доложна быть методом класса TMicro3Thread


 
yaJohn   (2002-01-21 13:17) [3]

Ispolzovanie Thread v dannom sluchae pochti ekvivalentno prosto gluhomu ciklu v programme. Pochemu? Ob etom uje neodnokratno pisali. Podumayte, chto delaet procedura Synchronize.
Chto doljno poluchitsia v itoge?


 
Eraser   (2002-01-21 14:12) [4]

>Maslov
Rab описана в ТMicro1Thread
>yaJohn
Synchronize я использую потому что в каждом TthreadObject Написано:
{ Important: Methods and properties of objects in VCL can only be used in a
method called using Synchronize, for example,

Synchronize(UpdateCaption);

and UpdateCaption could look like,

procedure TMicro3Thread.UpdateCaption;
begin
Form1.Caption := "Updated in a thread";
end; }

>Vovochka
что-то не получается где ее надо написать


 
Eraser   (2002-01-21 15:52) [5]

ответьте что-нибудь полезное


 
panov   (2002-01-21 16:06) [6]

TT = class(TThread)
c: Integer;
protected
procedure Execute;override;
public
procedure DoUpdate;

end;

implementation
uses
ufMainFormCBFiscal;

procedure TT.DoUpdate;
begin
fMainFormCBFiscal.Label1.Caption := IntToStr(c);
end;

procedure TT.Execute;
var
cc: Integer;
begin
for cc := 0 to 10000 do
begin
c := cc;
Synchronize(DoUpdate);
end;
end;


 
Rem   (2002-01-21 16:17) [7]

У меня это работает, да и не может не работать.

type
TMicroThread = class(TThread)
protected
procedure UpdateCaption;
procedure Execute; override;
procedure Rab;
end;

TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

var c: integer;

procedure TMicroThread.UpdateCaption;
begin
Form1.Caption := inttostr(c);
end;

procedure TMicroThread.Execute;
begin
Rab;
end;

procedure TMicroThread.Rab;
var
i: integer;
begin
for i:=1 to 10000 do
begin
inc(c);
Synchronize(UpdateCaption);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TMicroThread.Create(false);
end;

end.


 
Eraser   (2002-01-22 13:18) [8]

поток описан отдельным модулем ThreadObject и Synchronize(UpdateCaption) отрабатывает каждый раз но caption меняется только при первом проходе цикла ??


 
panov   (2002-01-22 13:36) [9]

Возможно, у тебя в процедуре rab еще используются объекты основного потока. Приведи ее код.


 
Eraser   (2002-01-22 16:06) [10]

он занимает 3 страницы. ну а так у меня в программе 2 Synchronize:
Synchronize(UpdateCaption) и Synchronize(UpdateCaption1) для разных объектов основной формы



Страницы: 1 вся ветка

Текущий архив: 2002.02.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
3-18709
KMZ
2002-01-10 08:17
2002.02.07
Мастера помогите плиз с проблемой,добавляю запись в таблицу MS SQL servere


1-18909
Chris
2002-01-23 09:23
2002.02.07
Смена цвета некоторых компонентов


1-18874
Satrap
2002-01-23 09:54
2002.02.07
Наивный вопрос о св-ве Tag


4-19021
}{elgi
2001-12-10 14:20
2002.02.07
добавление кнопки в BorderIcons


3-18711
Mr.Hunter
2002-01-09 12:14
2002.02.07
Как определить БД зная только название поля