我在程序中要进行长时间的查询统计操作,其间不能进行其它操作。如何解决这个问题(50分)

  • 主题发起人 主题发起人 yagqfhd
  • 开始时间 开始时间
Y

yagqfhd

Unregistered / Unconfirmed
GUEST, unregistred user!
想做成象WIN中搜索文件一样,查询统计其间其它工作还可以做!
 
用线程,长时间的操作在线程中执行
-----
http://www.8421.org
 
用多线程
 
在Delphi中有个Application.ProcessMessages;
我在作消息服务器是用的 推荐
 
能具体一点吗?
 
谁能给出具体例子的代码,我给300分!
daoguowang@sohu.com
 
这里给出CBuilder代码,自己转换成delphi吧
在.h中加如下代码。
static DWORD WINAPI yourThreadFun(LPVOID pv);
__fastcalldo
yourWork();
在cpp中加入
DWORD WINAPI TForm1::yourThreadFun(LPVOID pv)
{
TForm1 *pc = (TForm1 *) pv;
pc->DoyourWork();
TerminateThread(n_newh,NULL);
return 0;
}
__fastcall void TForm1::DoyourWork()
{
//在这做你的长时间工作
}
使用如下方法启动线程。
HANDLE n_newh;
//建议全局
n_newh = CreateThread(NULL,0,yourThreadFun,this,0,NULL);
ok, 很简单吧。
 
加入线程单元
unit MyThreadUnit
type
MyThread = class(TThread)
protected
...
procedure Execute;
override;
public
...
Finished: Boolean;
end;

procedure TMyThread.Execute;
begin
//你的执行代码
Finished:=true;
end;

end.

在主窗体加入此过程
procedure ExeThread();
var
aThread: TMyThread;
begin
aThread := TMyThread.Create(False);
while (not AnalyseThread.Finished)do
begin
Application.ProcessMessages;
Sleep(10);//可调整
end;
end;
 
写错了
AnalyseThread应该是aThread;
宁外线程优先级可适当调整。
 
懂了吗?
是否还需要帮助?
 
用线程,在delphi的例子中有
 
可以用applicatin.processmessage;
最好用多线程在后台查寻
 
后退
顶部