这个错在哪里? ( 积分: 100 )

  • 主题发起人 主题发起人 santaclaus
  • 开始时间 开始时间
S

santaclaus

Unregistered / Unconfirmed
GUEST, unregistred user!
请教一下:
三层(DCOM),服务端启动时隐藏主窗体,只留一个图标在系统托盘里。
问题:如果是手动启动并关闭服务端,则一切正常。如果是由客户端启动,当关闭时,服务端出现“无效的窗体句柄”的提示。如果把隐藏主窗体的功能去掉,则正常。为什么会这样呢
 
请教一下:
三层(DCOM),服务端启动时隐藏主窗体,只留一个图标在系统托盘里。
问题:如果是手动启动并关闭服务端,则一切正常。如果是由客户端启动,当关闭时,服务端出现“无效的窗体句柄”的提示。如果把隐藏主窗体的功能去掉,则正常。为什么会这样呢
 
不知道为什么,
不妨关闭前先 让他显示,然后关闭. 不就没事了?
 
to duhai_lee:
在formclose中吗,我试用啦,好象不起作用
 
单步执行看看再哪句出的错喽~
估计是隐藏了以后窗体被释放掉了
 
你用的多线程吧,应当在程序关闭之前就关闭线程,再关闭窗口,如果直接关闭窗口,而线程里面有对窗口的操作,而这时Form.Handle已经不存在,就会报这个错。
 
在主程序里没用多线程,不过RDM里选threadingModel:apartment,应该没关系吧
 
关键是,去掉隐藏主窗体就正常.但隐藏后为什么会报这错呢
 
我想大概是因为服务器由客户端启动,当客户关闭完后,服务器自动关闭了。出现这个错误,应该是托盘程序的错误。或许托盘功能找不到窗体了。
 
to xnew:
有可能,那托盘程序一个三方控件,能介绍个没bug的用用吗?
 
你觉得窗体隐藏后还会有Handle吗?

我觉得当一个窗体在桌面消失后(隐藏)后,他的Handle也就释放了,当然就没有句柄了。
 
那关闭前show出来为什么不行?
 
我没有其控件。我想,如果真要找错,大概还是需要你的部分原代码。
隐藏后,Handle肯定存在,这不要置疑。
 
后退
顶部