【发布时间】:2018-11-07 11:34:20
【问题描述】:
我正在尝试使用 c# 打开一个进程并在它被关闭时对其做出反应。这项工作适合我:
private void StartProc()
{
var process = new System.Diagnostics.Process { StartInfo = { FileName = "PathTo.exe" } };
process.Start();
process.EnableRaisingEvents = true;
process.Exited += this.Editor_Exited;
}
private void Editor_Exited(object sender, EventArgs e)
{
MessageBox.Show("Process canceled");
}
假设我正在使用此代码打开一个文本编辑器。如果已经有此文本编辑器的实例,则代码将不会打开第二个实例,并且还会在 Editor_Exited 代码中立即跳转。
我希望代码打开一个新实例,不要跳入Editor_Exited代码。
【问题讨论】:
-
我们在谈论哪个文本编辑器?如果实例已经存在,许多编辑器会自行关闭。
-
看起来另一个应用程序的行为是立即关闭,如果它已经打开并且这不在您的控制范围内。并非总是如此,例如,您可以打开任意数量的
notepad.exe应用程序。 -
没错。我希望它被配置为只允许一个实例,所以当你启动它时,它会检查它是否已经在运行,如果是,它就会退出。检查您的文本编辑器是否允许您控制它。
-
这是 Visual Studio 代码。但是为什么会触发事件呢?我的意思是它是关闭的“旧”实例,而不是我打开的那个,对吗?也许我错了,VS只是不允许打开第二个实例,那么您有什么解决方案吗?而且我还认为 VS Code 将允许多个实例。
-
@DanielRose 这是不允许多个实例的文本编辑器。
标签: c# process system.diagnostics