如题,那位能指点一下啊,我是初学,用单线程太慢了!!
解决方案 »
- 我的Delphi已经入门了,刚刚看完了《Delphi完美经典》,下一步应该看什么书?
- fastreport分组打印问题
- TWebBrowser的问题
- 在线等待:安装了FORMONE6,可是再Delphi6中导入Active控件时总不成功,请执教!
- 100分求助,窗体入坞技术
- 如何实现2个StringGrid的滚动条的同步
- 请高人回答: 我从.txt文件取出一条信息其中是用豆号分隔,豆号间是一个信息,问如何用一个函数取出???
- 服务器老是忙,大家讨论,散分
- 进度窗模态化问题
- Database 连接SQlServer不用别名怎么连?
- 那种html的邮件要怎么收发啊.急啊.谢谢了.
- 如何在TreeView控件的节点前面显示两个图标?
unit main;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, Grids, DBGrids, ADODB, DBTables, ComCtrls,
ExtCtrls, Menus,Activex;type
TForm1 = class(TForm)
ADODataSet1: TADODataSet;
DataSource1: TDataSource;
Button1: TButton;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
DBGrid1: TDBGrid;
TabSheet2: TTabSheet;
DBGrid2: TDBGrid;
TabSheet3: TTabSheet;
DataSource2: TDataSource;
DataSource3: TDataSource;
Button2: TButton;
Button3: TButton;
DBGrid3: TDBGrid;
MainMenu1: TMainMenu;
File1: TMenuItem;
hread1: TMenuItem;
StatusBar1: TStatusBar;
Timer1: TTimer;
Open1: TMenuItem;
New1: TMenuItem;
N1: TMenuItem;
Close1: TMenuItem;
Exit1: TMenuItem;
Memo1: TMemo;
Label1: TLabel;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TThreadQuery = class(TThread)
private
FQuery: TADOQuery;
FDataSource: TDataSource;
procedure ConnectDataSource;
Protected
procedure Execute; override;
public
constructor Create(Query: TADOQuery;DataSource: TDataSource); virtual;
destructor Destroy; override;
end;var
Form1: TForm1;
Q1,Q2: TThreadQuery;implementation{$R *.dfm}
procedure TThreadQuery.ConnectDataSource;
begin
FDataSource.DataSet := FQuery;
end;
procedure TThreadQuery.Execute;
begin
try
FQuery.Open;
Synchronize(ConnectDataSource);
except
ShowMessage('Query Error');
end;
end;
constructor TThreadQuery.Create(Query: TADOQuery; DataSource: TDataSource);
begin
FQuery := Query;
FDataSource := DataSource;
inherited Create(true);//true
FreeOnTerminate := false; //false
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
{Q1 := TThreadQuery.Create(adoQuery1, DataSource2);
Q2 := TThreadQuery.Create(adoQuery2, DataSource3);}
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Q1.Terminate;
Q1.Destroy;
Q2.Terminate;
Q2.Destroy;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Q1 := TThreadQuery.Create(adoQuery1, DataSource2);
if Q1.Suspended then Q1.Resume else Q1.Suspend;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Q2 := TThreadQuery.Create(adoQuery2, DataSource3);//add it
if Q2.Suspended then Q2.Resume else Q2.Suspend;
end;procedure TForm1.Exit1Click(Sender: TObject);
begin
application.Terminate
end;
destructor TThreadQuery.Destroy;
begin
CoUnInitialize;
inherited;
end;
end.