Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
1-18856
avr555
2002-01-22 17:02
2002.02.07
Вызвать событие


14-18948
Merlin
2001-12-17 11:59
2002.02.07
Значения смайликов


3-18757
Ренат
2002-01-09 08:12
2002.02.07
Только перехожу на MS SQL.


7-18999
Alexx
2001-10-31 08:40
2002.02.07
Работа с сетевой картой


3-18760
UnDISCOvery
2002-01-10 13:46
2002.02.07
Базы данных и графика в них !





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский