【问题标题】:How to open and detect closing of an exe in c#如何在 C# 中打开和检测 exe 的关闭
【发布时间】:2013-10-03 07:28:02
【问题描述】:

我正在开发一个 Windows 窗体应用程序,我需要在其中编辑某些配置文件。现在,当用户单击编辑选项时,我想在一个简单的记事本编辑器中启动这些配置文件。一旦启动,我想停止我的应用程序。只有当用户关闭记事本编辑器时,我才想停止我的应用程序。这是怎么做到的?

我看过这些问题,但答案有很多问题。 (我读了那里给出的cmets。)

Q1Q2

【问题讨论】:

标签: c# winforms


【解决方案1】:

您可以使用 Exited-Event:

try
{
     Process myProcess = new Process();
     myProcess.StartInfo.FileName = "notepad.exe";
     myProcess.StartInfo.Arguments = @"C:\PathToYourFile";
     myProcess.EnableRaisingEvents = true;
     myProcess.Exited += new EventHandler(myProcess_Exited);
     myProcess.Start();
 }
 catch (Exception ex)
 {
     //Handle ERROR
     return;
 }

// Handle Exited event and display process information. 
private void myProcess_Exited(object sender, System.EventArgs e)
{
     eventHandled = true;
     Console.WriteLine("Exit time:    {0}\r\n" +
            "Exit code:    {1}\r\nElapsed time: {2}", myProcess.ExitTime, myProcess.ExitCode, elapsedTime);
}

【讨论】:

    【解决方案2】:
    var process = System.Diagnostics.Process.Start("yourfile.txt");
    process.WaitForExit();
    

    这将打开您的文件。但是,有时该过程将为空,您将无法等待退出。为什么?

    Process.Start 方法

    返回值类型:System.Diagnostics.Process

    一个新的流程组件 与进程资源相关联,如果没有进程,则为 null 资源已启动(例如,如果现有进程被重用)。

    http://msdn.microsoft.com/en-us/library/53ezey2s.aspx

    【讨论】:

      【解决方案3】:

      您可以发起ProcessWaitForExit

      Process pr = Process.Start("Notepad");
      pr.WaitForExit();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-29
        • 2011-04-14
        • 1970-01-01
        • 2011-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多