| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 487 人关注过本帖
标题:求高手一个多线程程序
只看楼主 加入收藏
ywz315318
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-4-20
收藏
 问题点数:0 回复次数:1 
求高手一个多线程程序
需要一个多线程程序,两个线程就够了,实现对同一个对象的操作,就是并行
在线等答案........
搜索更多相关主题的帖子: 多线程 在线 答案 
2011-04-20 18:01
aaa000830
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:14
专家分:109
注 册:2011-4-30
收藏
得分:0 
//一个多线程的数据库查询的程序
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, DBGrids, Db, DBTables, StdCtrls, ADODB;

type
  TForm1 = class(TForm)
    ds1: TDataSource;
    dbgrd1: TDBGrid;
    ds2: TDataSource;
    dbgrd2: TDBGrid;
    btn1: TButton;
    qry1: TADOQuery;
    qry2: TADOQuery;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  TQueryThread = class(TThread)
  private
//    FSession:TSession;
//    FDatabase:TDatabase;
    FQuery:TADOQuery;
    FDatasource:TDataSource;
    FQueryException:Exception;
    procedure ConnectDatasource;
    procedure ShowQryError;
  protected
    procedure Execute;override;
  public
    constructor Create(Query:TADOQuery;DataSource:TDataSource);virtual;
  end;
var
  Form1: TForm1;

implementation

constructor TQueryThread.Create(Query:TADOQuery;DataSource:TDataSource);
begin
  inherited Create(true);
//  FSession := Session ;
//  FDatabase := DataBase;
  FQuery := Query ;
  FDatasource := DataSource;
  FreeOnTerminate := true;
  Resume;
end;

procedure TQueryThread.Execute ;
begin
  try
    FQuery.Open;
    Synchronize(ConnectDatasource);
  except
    FQueryException := ExceptObject as Exception;
    Synchronize(ShowQryError);
  end;
end;

procedure TQueryThread.ConnectDatasource ;
begin
  FDatasource.DataSet := FQuery ;
end;

procedure TQueryThread.ShowQryError;
begin
  Application.ShowException(FQueryException);
end;

procedure RunBackgroundQuery(Query:TADOQuery;DataSource:TDataSource);
begin
  TQueryThread.Create(Query,DataSource);
end;
{$R *.DFM}

procedure TForm1.btn1Click(Sender: TObject);
begin
  RunBackgroundQuery(qry1,ds1);
  RunBackgroundQuery(qry2,ds2);
end;

end.
2011-04-30 21:41
快速回复:求高手一个多线程程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015655 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved