我编写了一个使用Outlook和Redemption的应用程序,通过IMAP与Exchange服务器进行一些同步操作。它很有效,直到它试图退出。它执行最后一行代码,打印出“Service exiting”就好了,但是在我在Outlook上进行的Application.Quit()调用之后发生。 Outlook 2010图标仍然位于任务栏中!
我的问题是:如何强制Outlook关闭(即使是以快速和肮脏的方式),以便我的应用程序保证退出,而不是挂在那里等待Outlook完成关闭,有时它永远不会? (等待用户右键单击任务栏图标并选择“退出”)
TIA 戴夫 --Tindind,关于Fedang #Exchange-integration
答案 0 :(得分:0)
我从未使用过Redemption,但它似乎是某种工具以某种方式帮助自动化Outlook,并且每当您自动化任何Office应用程序时,您始终必须小心清除所有内容,否则它将留下悬挂参考,可能无法正常关闭。
因此,除非您使用Redemption以某种方式更改内容,否则我建议您可能需要在对所使用的Outlook中的任何内容的任何引用上调用Marshal.ReleaseComObject
。
为了能够做到这一点,你必须要小心,你总是存储你在某处访问的所有引用,所以避免做嵌套调用,如:
SomeOutlookObject.SomeInnerOutLookObject.SomeMethod
反而做
Object innerObj = SomeOutlookObject.SomeInnerOutLookObject;
innerObj.SomeMethod
这样您也可以在ReleaseComObject
上致电innerObj
。