目前有个主程序Main.exe,根据需要,它运行后可能要加载5个 .dll业务模块。这个软件是自动联网升级的,但是在升级的时候,如果模块在运行,升级会失败,所以我想在升级时,我要检查需要升级的模块是不是在运行,如果在运行就关掉它,当然这种说法是完美的,一时难实现,我就找个简单的方法,在升级的时候,只要发现main.exe在运行,我就kill它,可以这种方法也不行,因为kill 掉main.exe,它加载的a.dll业务模块还在内存中运行,导致a.dll还是无法升级,有没有其它好的办法解决这种问题???

解决方案 »

  1.   

    发送消息 让它知道要被关闭然后内部调用Environment.Exit 强退
      

  2.   

    http://blog.csdn.net/tanliyoung/article/details/1222186
      

  3.   

    如果只有 Main.exe 引用了a.dll 的话 
    主进程关闭了 a.dll 一定会释放掉 (一定一定的)如果a.dll 无法替换升级  只能说明 有其他进程在使用它 我推测 这个dll正在被升级程序使用写升级程序要有两个独立的exe 升级程序可以升级主程序 要程序集覆盖替换的话 就必须要绝对独立  主程序也可以升级升级程序 这样就完美了但是一般 我们会把升级软件写的比较通用  所以后一步会不做 等到 必须要改动升级程序时  我们在推出新的不支持升级的版本