Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何正确关闭使用Process打开的应用程序?_C# - Fatal编程技术网

C# 如何正确关闭使用Process打开的应用程序?

C# 如何正确关闭使用Process打开的应用程序?,c#,C#,我使用Process类打开应用程序: System.Diagnostics.Process vsProc = new System.Diagnostics.Process(); vsProc.StartInfo.FileName = "program.exe"; vsProc.Start(); 如果我只是杀死它vsProc.kill(),应用程序将不正确地结束。如何正确关闭程序?如何“正确”关闭程序完全取决于您正在处理的程序。如果您是编写子程序的人,那么您就可以实现正确和理智的行为。如果没有,

我使用Process类打开应用程序:

System.Diagnostics.Process vsProc = new System.Diagnostics.Process();
vsProc.StartInfo.FileName = "program.exe";
vsProc.Start();

如果我只是杀死它
vsProc.kill()
,应用程序将不正确地结束。如何正确关闭程序?

如何“正确”关闭程序完全取决于您正在处理的程序。如果您是编写子程序的人,那么您就可以实现正确和理智的行为。如果没有,最好的办法是找到应用程序的主窗口并向其发送关闭请求。。。而不是终止进程。

如果需要等待应用程序完成其作业,然后继续父进程,则可以调用它。如果它是一个未终止的应用程序,那么你所说的“错误结束”是什么意思?

我认为它错误结束的部分原因是,在杀死它之前,你没有释放与它相关的所有资源。尝试使用以下方法和步骤。CloseMainWindow将向指定的应用程序主窗口发送关闭消息,close()将释放与进程相关的资源。

vsProc.close()


释放与此组件关联的所有资源。还可以获取JetBrains ReSharper…

假设
vsProc
有一个主窗口,如果该窗口关闭,将干净地结束程序,您可以使用以下步骤。如果您不知道标题或标题是动态的,请使用
vsProc.MainWindowTitle
。只需调用
vsProc.MainWindowHandle
并使用结果值调用SendMessage命令,就可以跳过FindWindow步骤。

resharper与任何事情有什么关系?它使查找这些方法变得更容易。