我是在做outlook插件,outlook处于打开状态,在插件中执行Process.Start(@"D:\\Mail.msg");打开一个邮件窗口,关闭后,再次执行此命令就失败。

解决方案 »

  1.   

    Process.Start(@"D:\\Mail.msg");
    Process是进程
    这其实是启动一个进程打开文件
    而这个文件并不是exe可执行文件,并且它的扩展名已经和outlook进行了关联,所以相当于使用outlook进程打开文件至于outlook窗口关闭后为什么依然占用文件,你需要先确定到底是用同一个进程(你打开的那个窗口)打开的文件,还是新进程打开的
    如果是excel,那么每个文件其实都是独立的excel进程,outlook不清楚什么机制
      

  2.   

    你用代码打开了outlook,但是你手动关闭了outlook,但是代码中如果你不加检测进程的语句(每隔多久检测一次),那么程序会认为outlook是一直打开的。需要你手动终止进程,就不会占用了
      

  3.   


    谢谢回复,我刚确认了,是同一个进程,没有多开新进程,奇怪的是,等的时间长一点,占用会自动解除,然后又可以重新打开了,等待时间不确定,10秒,30秒都有可能,怀疑是outlook自动释放资源比较慢,我想想有什么方法可以调用语句来清理内存。
      

  4.   

    我是开发outlook加载项,outlook是一直打开的,不能关闭。只是在加载项页面调用了Process.Start,现在怀疑是outlook清理内存有延迟。
      

  5.   

    你可以先试试用outlook打开文件,再关闭窗口,再调用你的代码,看到底是哪里的问题
      

  6.   

    已经解决,只在代码中加了行内存强制回收代码就好了,GC.Collect()有时候还挺有用的。