none
怎么样才能从外部安全的退出程序 RRS feed

  • 问题

  •    Process serverpro = null;
    
       try
       {
        var t1 = Mutex.OpenExisting("KugarServer.exe");
        var plist=Process.GetProcessesByName("Server");
      
        if (plist!=null && plist.Length>0)
        {
         foreach (var p in plist)
         {
          //if (p.StartInfo.FileName.StartsWith(Application.StartupPath))
          //{
           serverpro = p;
           break;
          //}
         }
        }
       }
       catch (Exception)
       {
        serverpro = Process.Start("Server.exe");
       }
    
    
    
       try
       {
        //Process.Start("Client.exe").WaitForExit();
       }
       catch (Exception)
       {
        
       }
       finally
       {
        if (serverpro!=null && MessageBox.Show(@"是否连服务器一起退出",@"退出确认",MessageBoxButtons.YesNo)==DialogResult.Yes)
        {
         for (int i = 0; i < 10; i++)
         {
          if (!serverpro. hasexited)
          {
           serverpro.CloseMainWindow();
           serverpro.Close();        
          }
          else
          {
           break;
          }
    
          Thread.Sleep(1000);
         }
    
        }
    
        Application.Exit();
       }
    
    server.exe是一个我自己写的程序,server启动的时候,会把窗体设置为不可见,然后我在托盘处添加一个图标,现在我想在外部的程序安全的退出server.exe程序,用close之类的方法都不能退出,如果是判断hasexited属性的话,会报错,用kill的话,会强制关闭程序,这样的话,程序就不是正常退出了,很多保存工作都没做
    2010年5月6日 2:31

全部回复

  •             serverpro.WaitForExit(30000);  
     
                //如果这个外部程序没有结束运行则对其强行终止  
                if (serverpro.HasExited == false)  
                {  
                    Console.WriteLine("由主程序强行终止外部程序的运行!");   
                    serverpro.Kill();  
                }  
                else 
                {  
                    Console.WriteLine("由外部程序正常退出!");  
                }  


    参照:http://blog.csdn.net/ikmb/archive/2010/03/08/5355122.aspx


    努力+方法=成功
    2010年5月6日 2:55
  • 不是这样的,我写出来的那段代码是在另外一个程序A里面执行的,你看我的代码,里面在运行完server.exe之后,会再执行一个叫Client.exe的程序,Client.exe程序就是waitforexit的,我想在client.exe关闭之后,把server.exe也一起退出
    2010年5月6日 3:09