【发布时间】:2018-06-30 01:28:01
【问题描述】:
抱歉标题不好,但我不知道如何描述它。
我正在构建一个控制台应用程序。一般的想法是,当输入这样的命令时,它会永久运行(并做一些后台工作):
App.exe run
然后我想在进入时终止应用程序
App.exe exit
你会怎么做?当我想要这种行为时,我需要记住什么吗?还是有更好的办法?
我知道 args[] 存储了所有参数,但是您将如何“找到”另一个正在运行的进程并终止它?据我了解,在运行然后退出时,我只需打开程序两次。所以exit需要关闭正在运行的进程和自身。
【问题讨论】:
-
我假设你想关闭
App.exe run的所有个正在运行的实例?您是否要允许这些实例在它们退出之前执行任何清理?做对是相当棘手的。 -
是的。清理使整个事情变得更加复杂是的。有没有更好的方法来解决这个问题?
-
没有标准的方法来做到这一点,你必须与进程的运行实例交谈,告诉它它需要终止。是您自己这样做还是留给 app.exe 的第二个实例来查找第一个实例取决于您自己。通常使用命名管道完成。通常只使用 Process.Kill() 应用程序要容易得多。
-
我建议的某种外部钩子(或@SlimsGhost 也提到过)将允许您“干净地”退出第一个实例,因为您只需轮询该钩子,然后当它更改时您可以清理并退出当你想要的时候。
标签: c# .net-core console-application