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

Вниз

Проблема с TThread...   Найти похожие ветки 

 
pathfinder   (2005-12-17 22:54) [0]

Мастера, не подскажете в чем дело? В отдельном процессе запускается цикл, но при его выполнении интерфейс программы не откликается на клики мышки:( Что я делаю не так?

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, unit2, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
 private
   T1 : TMyThread;
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
T1:=TMyThread.Create(false);
T1.Priority := tplowest;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
T1.Terminate;
end;

end.

unit Unit2;

interface

uses
 Classes;

type
 TMyThread = class(TThread)
 private
   { Private declarations }
 protected
   procedure Execute; override;
   procedure Run;
 end;

implementation

uses sysutils, unit1;

procedure TMyThread.Execute;
begin
Synchronize(run);
end;

procedure TMyThread.Run;
var i: integer;
begin
for i:=1 to 1000000 do Form1.caption:=inttostr(i);
end;

end.


 
Delphi   (2005-12-18 00:06) [1]

Всё правельно(ИМХО), проблема в том что метод вызванный методом Synchronize, исполняется в основном потоке VCL.


 
pathfinder   (2005-12-18 07:24) [2]

А как сделать, чтобы он выполнялся в отдельном потоке?


 
Virgo_Style ©   (2005-12-18 11:26) [3]

pathfinder   (18.12.05 7:24) [2]

В данном случае никак, раз тебе нужна непрерывная работа с VCL. Ну или хотя бы

в Execute
for ... do
begin
 Syncronyse(Run);
 Sleep(10);
end;

а в Run просто присваивать Form.Caption.
Параметр в Run передать как св-во класса, например.



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

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

Наверх




Память: 0.47 MB
Время: 0.157 c
2-1135201319
Mischa_M
2005-12-22 00:41
2006.01.08
ProgressBar


3-1130924618
Id
2005-11-02 12:43
2006.01.08
Проблема Соединение с базой


2-1135102199
Aleks
2005-12-20 21:09
2006.01.08
как узнать имя папки пользователя в (моих документах)


2-1134477456
Zaletchik
2005-12-13 15:37
2006.01.08
Большие переменные


1-1134048690
MetalFan
2005-12-08 16:31
2006.01.08
Генерация строки по маске...