winform 更新程序 跟主程序问题

likaiiscoder 2013-11-11 03:18:15
小弟写了一个项目里面用到了更新程序 在Program中用到了这个 Application.SetCompatibleTextRenderingDefault(false);
//先检查是否更新
frmUpdate fu = new frmUpdate();
fu.checkUpdate();
if (fu.availableUpdate > 0)
{
fu.ShowDialog();
}
//网络验证
frmCheck fc = new frmCheck(); 如果availableUpdate中的值>0则表示要更新,现在就是我更新完成后要先重启该程序,在frmUpdate中 try
{
foreach (Process p in Process.GetProcessesByName("LazyTao.exe"))
{
p.Kill();
}
//将临时目录下的下载文件复制到当前跟目录(即工作目录下)并删除临时目录
CopyFile(tempUpdatePath, Directory.GetCurrentDirectory());
System.IO.Directory.Delete(tempUpdatePath, true);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
//启动主程序
if (this.isRun==true)
{
Process.Start(mainAppExe);
}
会提示错误LazyTao.exe在另一个程序中运行 该怎么解决?
...全文
118 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2013-11-11
  • 打赏
  • 举报
回复
之所以你的程序出错就是因为kill异步执行,因此在执行删除文件的时候p并没有真正完全结束。
threenewbee 2013-11-11
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/zh-cn/library/het2hs40(v=vs.110).aspx Kill 方法将异步执行。 在调用 Kill 方法后,请调用 WaitForExit 方法等待进程退出,或者检查 HasExited 属性以确定进程是否已经退出。 foreach (Process p in Process.GetProcessesByName("LazyTao.exe")) { p.Kill(); p.WaitForExit(); }
脱离苦海 2013-11-11
  • 打赏
  • 举报
回复
GetProcessesByName("LazyTao.exe")) 改成 GetProcessesByName("LazyTao.exe的标题名字,就是左上角的名字"))

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧