当我使用Application.Exit()或Form.Close()时,为什么我的notifyicon应用程序没有退出?

时间:2010-08-26 01:37:10

标签: winforms

我有一个Windows窗体应用程序退出到系统托盘Notifyicon,我尝试调用Application.Exit()或Me.Close()来关闭程序。但两种方法都无法完成。关闭它的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

  
    

'最好在结束'应用程序之前使系统托盘图标不可见,否则,当应用程序不再运行时,它可以留在托盘中。

  

该位指的是通知区域(系统托盘)未真正轮询以确保与图标对应的句柄仍然存在。因此,如果某些内容没有正常退出或者没有清理其通知图标,则通知区域不会意识到该窗口句柄飞到了合作社。

您之前可能已经看到过这种行为:有时您将鼠标悬停在通知区域上,一旦鼠标开始将鼠标悬停在您知道您之前退出的应用程序的图标上,通知区域就会“关闭我的嘴巴,把我漆成红色,猜测手柄不再是“和噗!删除图标。

  
    

但是在关闭程序后,托盘图标仍然显示,所有功能都可用。在我看来,该程序仍在运行。

  

是的,在我看来你的应用程序仍在运行。请注意,Application.Exit()不必成功 - 存在重载,允许应用程序的其他部分取消请求。所以这是要检查的东西。

通知图标实际上不会让您的应用程序“活着”,因为它没有您控制下的消息泵,因为它是。您应用中的某些内容无法退出。

希望有助于您走上正轨!