一个简单的线程问题

dengpingyy 2004-08-11 08:07:31
我现在做了一个数据转换程序(把DAT文件中的数据导入SQL SERVER)中,但是由于数据量特别大.转换时间特别长,在转换过程中,程序就像死机了一样,现在我想用线程去做,但是没做成功,哪位大哥,可以帮忙给点代码或例子?谢谢
...全文
91 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengpingyy 2004-08-13
  • 打赏
  • 举报
回复
上面这位叫'还是铁棒....针'的大哥,用你的方法,我现在要传入DAT文件名的参数,怎么样操作!谢谢!
beyondtkl 2004-08-12
  • 打赏
  • 举报
回复
照你描述的情形 用线程可能效果更糟糕
蓝色光芒 2004-08-12
  • 打赏
  • 举报
回复
var
Stop : Boolean;
hDat2SQLThread : Thandle;//定义一个句柄
ThreadID : DWord;

procedure Dat2SQL;stdcall;
begin
...
while Not Stop do begin
//转数据过程
end;
...
end;

Stop := False;
hDat2SQLThread := CreateThread(nil,0,@Dat2SQL,nil,0,ThreadID);

如果想停止程序,放个按钮,写上Stop := True就行了。
ztenv 2004-08-12
  • 打赏
  • 举报
回复
用线程速度会更慢,虽然会响应用户的事件,建议楼主先把DAT文件分主几个小块,然后再添到数据库中,等需要时,再从数据库中读出来合并就可以了
iLvXX1981 2004-08-11
  • 打赏
  • 举报
回复
1、首先新建一个工程,然后选择File、New、Other、Thread Object,
ClassName:TMythread;生成一个新的单元Unit2.pas;
2、

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
Mythd: TMythread;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Mythd := TMythread.Create(True);
mythd.FreeOnTerminate := True;
//可以在这里传参数到unit2中,如文件名等
Mythd.Resume;
end;

end.

unit Unit2;

interface
uses
Classes;
type
TMyThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
implementation
{ TMyThread }
procedure TMyThread.Execute;
begin
{ Place thread code here }
end;
end.

要在unit2定义必要的参数,由unit1中传入;

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧