日期:2014-05-17  浏览次数:20837 次

关于 程序 调用 关闭
A为主程序  B为更新程序
目标:
A运行监测到更新,运行B。。
B运行 关闭A,运行结束后 调用A

问题:
B运行 没有关闭A

代码 :
A检测:
private void Login_Load(object sender, EventArgs e)
        {
            //检查是否有 
            System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName("StationKQ");
            if (p.Length > 1)
            {
                MessageBox.Show("应用程序已经启动");
                this.Close();
                Dispose();
                return;
            }
        }
A调用:
if (dr == DialogResult.OK)
                   {
                       this.Hide();
                       System.Diagnostics.Process p = System.Diagnostics.Process.Start(Application.StartupPath + "\\" + "auto.exe");//notepad");
                       MessageBox.Show("更新完成");


B关闭A:
this.label1.Text = "正在关闭程序进程...."; 
                System.Diagnostics.Process[]proc=System.Diagnostics.Process.GetProcessesByName(exe);
               
                //关闭原有应用程序的所有进程 
                foreach(System.Diagnostics.Process pro in proc) 
                { 
                    pro.Kill(); 
                } 

结果 显示
“更新成功!”
“程序已经启动”-----这个说明之前的我没有关闭吧?
------解决方案--------------------
没错,你没有关闭,因为你的一句MessageBox.Show("更新完成");阻止了它的关闭,你为什么不考虑直接自己关闭,既然检测出了需要更新,在调用更新程序之后自己退出进程不就完事了吗?
------解决方案--------------------
if (dr == DialogResult.OK)
                   {
                       System.Diagnostics.Process p = System.Diagnostics.Process.Start(Application.StartupPath + "\\" + "auto.exe");//notepad"); &nb