我有一个特定控制台应用程序的许多实例,它一次性运行&想要通知特定的运行控制台停止处理,以便我可以优雅地关闭它。我看到的大多数选项都会杀死进程,而不是发出信号。
我一直在研究各种选择,但有点困惑。所以我不会列出我研究的选项。
所以我的问题是......
问:在同一台机器上发出进程信号的最佳选项是什么? 问:在另一台机器上发出进程信号的最佳选项是什么?
答案 0 :(得分:1)
好的,所以每个人都想要的是这个。
应用程序的设计不受外部应用程序的干扰。 这是应用程序空间。如果不使用某种公共API,应用程序A不应该干扰应用程序B的内部工作。
如果你真的希望它能够这样做,你需要进入DLL注入的领域,这是非常hacky并且不容易实现。
如果您可以控制两个应用程序的代码,我建议您
或
就像这样:
App 1 - 启动
App 1 - 在端口12345上启动TCPListener 应用1 - 开始做业务逻辑
App 2 - 连接到端口12345上的App1 App 2 - 发送关机命令
应用1 - 检测关机命令并设置内部变量,说“不再需要开始工作”
App 1 - 完成最后一个工作项,然后检测到该变量仍然设置为“No more work”,因此在完成当前工作项后关闭该变量。
只有在您可以控制两个应用程序的代码或者您熟练使用DLL注入和挂钩内部方法时,才能执行此操作。 我在过去已经完成了它,我已经将一个DLL注入到父应用程序中,以创建TCPListener。但是,让它“等待”直到当前工作项完成,同时阻止新项目启动 - 将是主要的复杂因素。