主界面代码:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls
,Unit2
;type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Edit2: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
thrDemo:TThrDemo;
thrDemo2:TThrDemo;
public
{ Public declarations }
end;var
Form1: TForm1;implementation
//uses Unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
//TthrDemo.Create(Edit1);
thrDemo:=TThrDemo.create(edit1);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
thrDemo2:=TthrDemo.Create(Edit2);
//TthrDemo2.Create(Edit2);
//thrDemo2:=TThrDemo2.create(edit2);
end;end.线程类代码:
unit Unit2;interfaceuses
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
Dialogs,StdCtrls;type
TThrDemo=class(TThread)
private
{ Private declarations }
J:Integer;
FEdit:TEdit; procedure setValue;
public
constructor create(Edit:TEdit);
protected
procedure Execute; override;
end;
implementation
{ TThrDemo }constructor TThrDemo.create(Edit:TEdit);
begin FEdit:=Edit;
FreeOnTerminate:=true;
inherited create(false);
end;procedure TThrDemo.Execute;
var
i:Integer;
begin
J:=0;
//while 1<>0 do
begin
for i:=1 to 50000 do
begin
J:=J+i;
Synchronize(setValue);
end;
end;end;procedure TThrDemo.setValue;
begin
FEdit.Text:=IntToStr(J);
end;
end.button1,button2 单独点击时,线程都能正常,也可以移动主界面,
如先点击button1,再点击button2 时,主界面停止响应,直到线程执行结束才正常;
但有个情况下又可以,系统同时再执行一个耗cpu资源的程序(例如复制一个大的文件)时,同时执行button1,button2线程,也可以移动主界面不知bug在何处?
请各位帮忙看下!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls
,Unit2
;type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Edit2: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
thrDemo:TThrDemo;
thrDemo2:TThrDemo;
public
{ Public declarations }
end;var
Form1: TForm1;implementation
//uses Unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
//TthrDemo.Create(Edit1);
thrDemo:=TThrDemo.create(edit1);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
thrDemo2:=TthrDemo.Create(Edit2);
//TthrDemo2.Create(Edit2);
//thrDemo2:=TThrDemo2.create(edit2);
end;end.线程类代码:
unit Unit2;interfaceuses
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
Dialogs,StdCtrls;type
TThrDemo=class(TThread)
private
{ Private declarations }
J:Integer;
FEdit:TEdit; procedure setValue;
public
constructor create(Edit:TEdit);
protected
procedure Execute; override;
end;
implementation
{ TThrDemo }constructor TThrDemo.create(Edit:TEdit);
begin FEdit:=Edit;
FreeOnTerminate:=true;
inherited create(false);
end;procedure TThrDemo.Execute;
var
i:Integer;
begin
J:=0;
//while 1<>0 do
begin
for i:=1 to 50000 do
begin
J:=J+i;
Synchronize(setValue);
end;
end;end;procedure TThrDemo.setValue;
begin
FEdit.Text:=IntToStr(J);
end;
end.button1,button2 单独点击时,线程都能正常,也可以移动主界面,
如先点击button1,再点击button2 时,主界面停止响应,直到线程执行结束才正常;
但有个情况下又可以,系统同时再执行一个耗cpu资源的程序(例如复制一个大的文件)时,同时执行button1,button2线程,也可以移动主界面不知bug在何处?
请各位帮忙看下!
解决方案 »
- CxGrid中的自动滚屏问题,急!!
- INDY控件(IDTCPSERVER和IDTCPCLIENT)的问题,服务器段访问数据库的线程控制,分数不多,问题很急,请各位帮忙!!
- 简单数据库问题
- 关于dbgrid的问题
- 我使用了TADOConnection 这个控键,但启动总要密码(我没设密码)请问如何忽略
- BLUE学长的今天高考作文
- delphi中的ADO是怎么用的?
- 怎样将WIN32API函数的结构STRUCT转化成Delphi可以用的数据类型?
- 为什么在用DELPHI做多层的时候提示错误“Name not unique inthis context”
- delphi7组件大全的下载
- rxToolEdit.dcu什么作用
- delphi 遇到问题,通过listbox达到在数据库中的删除操作
Synchronize(setValue);
后加入
sleep(1);