如何解决在关闭过程中保持进程活动
我在同一台计算机上有两个桌面应用程序,我们称它们为“客户端”和“服务器”。 Windows关机时,我希望客户端对服务器进行一些简短的清理工作。客户知道关闭时间,因为在OnFormClosing
中FormClosingEventArgs.CloseReason
是CloseReason.WindowsShutDown
。但是与此同时,服务器可能会被操作系统强行杀死。是否可以使服务器尽可能长时间地处于活动状态,以便所有客户端都可以完成其工作,但不能完全停止关机?
- 服务器不知道哪些客户端还活着并且需要打扫房间。
- 客户端和服务器均不应导致Windows显示该应用阻止Windows关闭的消息。
我想我正在请求一些Windows API调用,这些调用可以与Windows协商以在可能的情况下最后终止该进程,但是欢迎任何可行的解决方案。客户端用C#编写,服务器用C ++编写。
解决方法
显而易见的解决方案是使服务器a Windows service。
作为权宜之计,您可以尝试SetProcessShutdownParameters
。
,此功能设置一个进程相对于系统中其他进程的关闭顺序。
服务器应跟踪与其连接的客户端。因此,如果您的应用程序正忙于执行房屋清洁工作,则即使只是暂时,它们也会阻止关机。那么让Windows向用户显示这样的消息又有什么问题呢?
当服务器收到即将关闭的通知时,如果有任何客户端连接,请致电ShutdownBlockReasonCreate()
。无论客户端是否执行房屋清洁,当最后一个客户端断开连接时,服务器都可以致电ShutdownBlockReasonDestroy()
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。