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

seav 2005-04-20 08:35:10
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;
...全文
574 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cangwu_lee 2005-06-06
  • 打赏
  • 举报
回复
应该是释放了不该释放的变量
Kshape 2005-06-06
  • 打赏
  • 举报
回复
http://search.csdn.net/Expert/topic/2596/2596451.xml?temp=.999386
wlbfeihu 2005-06-06
  • 打赏
  • 举报
回复
可能是你的线程与VCL通信是不同步
把与Vcl通信的方法放在Synchronize()中
xinqingbucuo 2005-06-06
  • 打赏
  • 举报
回复
同意 beyondtkl(大龙驹<學,無涯>)
记着结束线程和释放线程,
syd111 2005-06-03
  • 打赏
  • 举报
回复
控件的问题
ljyt 2005-04-22
  • 打赏
  • 举报
回复
退出时调用form1.NMHTTP1.Active:=False
beyondtkl 2005-04-21
  • 打赏
  • 举报
回复
應該是

關閉 thread後 再關閉窗口的。。
因為呢thread中 都用到了窗口中的咚咚。。

TerminateThread 需要看返回值。。
還有一般不要用TerminateThread 這個函數。。。

具體錯誤是什麼??

1,183

社区成员

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

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