Главная страница
    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.008 c
1-18887
Angel-R
2002-01-21 08:51
2002.02.07
Нужна функция Region по BitMap-у.... пожалуйста!


7-18993
GovoRun
2001-10-26 22:27
2002.02.07
Поддерживает ли видеокарта это разрешение?


3-18696
Mirage
2002-01-08 18:24
2002.02.07
Database Desktop


14-18958
fag2000@ok.ru
2001-12-17 14:57
2002.02.07
Установка MS-SQL Server


14-18981
РУС
2001-12-16 22:55
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский