主要是程序更新自己得问题
我用A下载一个补丁程序B,下完后想实现让程序A自身结束并让系统在结束A后10秒运行程序B?因为我得程序A占用串口资源,
我用下面这样操作往往速度过快,因串口资源尚没有释放而导致补丁程序覆盖A得EXE文件失败。case SUCCESS_DOWNLOADED:
   ShellExecute(NULL, "open", szFileB, NULL, NULL, SW_SHOW);
   PostQuitMessage(0);

解决方案 »

  1.   

    你不用让A结束后等10秒后运行B,你可以这样,在A结束之前起动B,让B等待10秒后再执行任务.
      

  2.   

    如果能控制B,当然最好勒,但是我用的补丁程序WINRAR自释放文件啊
    不能设置悬停哦
      

  3.   

    A在结束之前起动B.在B起动后用WaitForSingleObject等待一个内核对象,当A把文件解压完成后,立即SetEvent来触发事件,这样B就会继续往下执行.或你干脆不要用A下载,专门写个工具来下载,等下载完成后发送一个消息给A,并结束A.然后来安装补丁,一般软件更新都是用的这种方法.
      

  4.   

    在B起动后用WaitForSingleObject等待一个内核对象?==========
    B不能控制啊,B程序我是用的WINRAR自释放文件
      

  5.   

    用第3个进程(即C)来控制。
    A先启动C,C等待A结束后在启动B,然后C退出
      

  6.   

    再用一个程序C吧,让这个程序不占用串口资源
    让A启动C,然后立刻关闭,C中等待10秒之后再启动B,之后C自行关闭
      

  7.   

    写个批处理
    @echo
    rundll32 kernel32.dll,Sleep 1000
    call b.exe
      

  8.   

    或者写"工作排程"计算当前时间,然后设定运行时间.其实最好的办法是:
    ------------------------------------------------
    或你干脆不要用A下载,专门写个工具来下载,等下载完成后发送一个消息给A,并结束A.然后来安装补丁,一般软件更新都是用的这种方法.