一个应用程序的多个实例,如何关闭第一个实例并保留最后一个实例
本文关键字:实例 何关闭 第一个 最后一个 保留 一个 应用程序 | 更新日期: 2023-09-27 17:58:32
我想在不中断任何服务的情况下更新应用程序,其想法是通知应用程序的第一个实例(也称为旧版本)何时准备好启动最后一个实例(即新版本 示例: 时间到了,会用更新的版本重复此过程。 通过这种方式,服务会在尽可能短的时间内中断。 我的想法是使用系统范围的互斥,不幸的是,它们在mono中不可用,而且无论如何都不可能用这种技术完成第5步。 另一种方法可能是使用管道,这在mono上也不可用。 我的最后一个想法是在随机(恒定)端口上使用绑定到环回地址的套接字,你认为这可以吗?或者有更好的方法来处理像我这样的情况? 所有代码都必须在Mono和.NET上运行。 感谢阅读,法比奥·伊奥蒂。
有点像黑客,但你能直接写入一个已知的文件吗
- 应用程序启动文件并检查其他应用程序
- 如果找不到应用程序,则写入"我的id-running",否则如果找到另一个正在运行的应用程序则写入"my id-starting"
- 运行应用程序检查文件中是否有任何标记为启动的新应用程序
- 如果发现启动应用程序,请停止服务并写下"我的id-shutdown",然后终止应用程序
- 启动应用程序将轮询文件,直到发现没有应用程序在运行,然后启动服务并写入"我的id-running"
这看起来像是一个类似问题的链接:
Mono中简单的跨平台进程到进程通信?