[英]How do i exit a running console app?
对不起,标题不好,但我不知道如何形容。
我正在构建一个控制台应用程序。 一般的想法是,当输入这样的命令时,它会永久运行(并做一些后台工作):
App.exe run
然后,我想在进入时终止该应用
App.exe exit
你会怎么做? 当我想要这样的行为时,我需要记住什么吗? 或者,还有更好的方法?
我知道args []已存储所有参数,但是您将如何“查找”其他正在运行的进程并终止它呢? 据我了解,在运行然后退出时,我只打开了两次程序。 因此,退出需要关闭正在运行的进程及其本身。
我曾经想过要使用注册表项,因此在执行第一个App.exe run
时,它将注册表项设置为某个值(即true
),并定期检查以查看它是否仍然为true
以及是否为true
然后使用Environment.Exit(0)
关闭。
现在,您的App.exe exit
将需要将该注册表项更新为false
。 这似乎是一个非常紧凑的解决方案,因为您不必担心找到某个进程并将其杀死,实际上,两个程序执行都不需要知道另一个进程,因为它只是在更新注册表项。
另一个解决方案是对一个临时文本文件执行相同的操作,但是我建议在此之前使用注册表项选项。
这里是RegistryKey
类的一些文档,供您参考。 我在以前的项目中已经使用过很多次,因此它应该适合您的情况。
https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.win32.registrykey?view=netframework-4.7.1
为了让您开始使用此选项,我将在Software配置单元中手动创建密钥,然后使用以下命令进行访问。
RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software");
实现此目的的一种方法是仅允许运行应用程序的一个实例。
这个问题提供了创建单实例应用程序的解决方案。 调用该应用程序时,您可以验证是否已经有一个正在运行的实例并关闭该实例(所提供的问题已对此提供了解决方案)。
基于@ivcubr(和其他)的答案,您有几个简单的选择:
我认为#3是最简单的实现方式,除非您已经有使用选项#1或#2的先例(或另一个很好的理由)。
您可以使用Application.Exit()
方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.