首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于 程序 调用 封锁

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

关于 程序 调用 关闭
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");                       


                       System.Environment.Exit(System.Environment.ExitCode);
}

//更新完成提示到auto.exe中进行提示。
[解决办法]
在B里面判断一下A程序是否退出不就行了,根本不用在B里面关闭A

热点排行