谁有用多线程做等等待窗口的例子? 能否给个方法最好能贴个源码,多谢. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 const WM_DONE = WM_USER + 1;type TForm1 = class(TForm) private FWaitForm: TWaitForm; procedure DoSomething; procedure WMDone(var msg: TMessage); message WM_DONE; end; TWorkThread = class(TThread) private FHandle: THandle; protected procedure Execute; override; public constructor Create(AHandle: THandle); end;.....procedure TForm1.DoSomething;begin TWorkThread.Create(Handle); FWaitForm := TWaitForm.Create(Application); FWaitForm.Show;end;procedure TForm1.WMDone(var msg: TMessage);begin if Assigned(FWaitForm) then FWaitForm.Free;end;constructor TWorkThread.Create(AHandle: THandle);begin FHandle := AHandle; inherited Create(False);end;TWorkThread.Execute;beign FreeOnTerminated := True; DoYourWork; PostMessage(FHandle, WM_DONE, 0, 0);end; 没看懂题目这个窗口是自己写的窗口?那创建时向线程发消息。不是自己写的(不会主动向线程发消息)?那线程用timer循环检测窗口是否创建。 是想在执行的时候出一个等待的窗体吗?用消息的方式来进行线程和窗体的联系.先创建窗体,然后创建线程将窗体HANDLE给线程,显示窗体,线程在执行时给窗体发消息,显示进度,线程结束时发消息给窗体关闭. 只想实现单纯的等待窗口,没必要用到线程..Sleep(10000)就可以了. 在主窗体query查询大量数据时显示用户等待窗体,当query执行完后等待窗体隐藏或关闭 用多个线程查询?查询时显示等待窗体?我的一点想法可以考虑一下。启动线程时设置线程相应查询标志fChaXun[i] := True; 判断等待窗体显示没有,没显示的话显示等待窗体;i代表第几个线程关闭线程的时候设置相应的查询标志fChaXun[i] := False;并判断是不是所有的查询标志都是False,如果都是False说明查询结束,关闭等待窗体。 主题内容说的不太清楚。但我的建议是别等待,而是用Hook监视因为等待的话,等待时长跟很多因素有关系,网络条件,数据库条件,主机条件 DELPHI 每秒发送短信POST提交 Delphi Tcxspinedit 控制不能输入 有没有人 有 addin express 最新版的 2007的 我有 为什么这么做?修改注册表使软件随Windows一起启动? [十万火急]有关dll的问题 我就不相信CSDN没有高手,帖出代码求救!!! 如何交换数组中内容? 有那种按扭组建支持,当我鼠标OVER,DOWN,……分别是一幅BMP图的组建? 如何做一HTML文件,打开后,没有菜单项,工具栏,地址拦? 关于安装程序的设计(50分) 如何提取Delphi编译环境? 如果我新建一个线程,那么我怎么在创建的同时获得这个线程的handle?
WM_DONE = WM_USER + 1;type
TForm1 = class(TForm)
private
FWaitForm: TWaitForm;
procedure DoSomething;
procedure WMDone(var msg: TMessage); message WM_DONE;
end; TWorkThread = class(TThread)
private
FHandle: THandle;
protected
procedure Execute; override;
public
constructor Create(AHandle: THandle);
end;.....procedure TForm1.DoSomething;
begin
TWorkThread.Create(Handle);
FWaitForm := TWaitForm.Create(Application);
FWaitForm.Show;
end;procedure TForm1.WMDone(var msg: TMessage);
begin
if Assigned(FWaitForm) then FWaitForm.Free;
end;constructor TWorkThread.Create(AHandle: THandle);
begin
FHandle := AHandle;
inherited Create(False);
end;TWorkThread.Execute;
beign
FreeOnTerminated := True;
DoYourWork;
PostMessage(FHandle, WM_DONE, 0, 0);
end;
这个窗口是自己写的窗口?那创建时向线程发消息。
不是自己写的(不会主动向线程发消息)?那线程用timer循环检测窗口是否创建。
进度,线程结束时发消息给窗体关闭.
但我的建议是别等待,而是用Hook监视
因为等待的话,等待时长跟很多因素有关系,网络条件,数据库条件,主机条件