当我关闭窗口时出现出现“无效的窗口句柄”的错误,应该怎样解决呢

seav seav 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
function MyThreadFunc(P:pointer):Longint;stdcall;

var
page,allpage,i,j,n:integer;
username:string;
ifhave:boolean;
begin

form1.NMHTTP1.Get(form1.Edit1.Text);
form1.Memo1.Lines.Text:=form1.NMHTTP1.Body;


for i:=0 to form1.Memo1.Lines.Count-1 do
begin
form1.Memo2.Lines.Add(form1.Memo1.Lines.Strings[i])
end;

end;


procedure TForm1.Button1Click(Sender: TObject);
begin

hthread:=CreateThread(nil,0,@MyThreadFunc,nil,0,ThreadID);
if hThread=0 then
messagebox(Handle,'Didn’t Create a Thread',nil,MB_OK);


end;

当我关闭窗口时出现出现“无效的窗口句柄”的错误,应该怎样解决呢?是不是要先结束线程呢?
我有试过在关闭窗口前调用:

form1.NMHTTP1.Abort;
GetExitCodeThread(hthread,lpexitcode);
TerminateThread(hthread,lpexitcode);

但关闭窗口后,还是出现以上错误~~~大家知道怎样解决吗?或者可以提供能够在线程中实现以下代码的运行吗?

var
page,allpage,i,j,n:integer;
username:string;
ifhave:boolean;
begin

form1.NMHTTP1.Get(form1.Edit1.Text);
form1.Memo1.Lines.Text:=form1.NMHTTP1.Body;
for i:=0 to form1.Memo1.Lines.Count-1 do
begin
form1.Memo2.Lines.Add(form1.Memo1.Lines.Strings[i])
end;

end;
...全文
评论 7
收藏 已收藏
分享
返回顶部
seav
Windows SDK/API 1,184 成员 22,326 内容