【发布时间】:2012-01-30 10:10:11
【问题描述】:
我有一个相当稳定且已使用多年的 Outlook 插件。在 citrix 机器环境中,如果打开,插件会导致 Outlook 挂起。日志没有多大帮助。如果我可以进行原生调试,我该如何解决这个问题?
【问题讨论】:
标签: debugging vsto debug-symbols sysinternals
我有一个相当稳定且已使用多年的 Outlook 插件。在 citrix 机器环境中,如果打开,插件会导致 Outlook 挂起。日志没有多大帮助。如果我可以进行原生调试,我该如何解决这个问题?
【问题讨论】:
标签: debugging vsto debug-symbols sysinternals
Outlook 挂起的原因有很多。由于 Outlook 是基于 COM 的,它使用STA,这将导致主 UI 线程在等待长时间运行的操作完成时挂起(网络调用、磁盘读/写等。 )。
您需要查看源代码以查看组件在挂起时执行的行为。如果您可以重复挂断,插入跟踪语句 (Trace.TraceInformation) 也可能会有所帮助。从事件ThisAddIn.ThisAddIn_Startup 开始,查看AddIn 的入口点。 DebugView 是一个很棒的实用程序,可以在插件运行时查看其跟踪输出。
如果 COM 资源没有被正确清理 (Marshal.ReleaseComObject) - 随着时间的推移,内存消耗会增加,这将开始使应用程序变得迟缓 - 尽管它不应该导致它冻结/挂起。
最好的办法是了解插件的行为,看看是什么触发挂起。
【讨论】: