C#Custom Form在退出时抛出COMException

时间:2012-08-28 15:04:41

标签: c# exception error-handling ms-office add-in

我创建了一个自定义表单,其中包含几个按钮和一个文本框。

此自定义表单由我在Microsoft Outlook插件上创建的单击事件按钮打开,该插件正在我附加到“功能区”上。 (不确定这是否重要,这里没问题。)

在Windows窗体上,第一个按钮只是将文本文件的内容保存到磁盘。

另一个按钮尝试关闭表单。在这个按钮单击事件中,我尝试了以下两行,分开和一起

this.Close();和this.Dispose();

当我使用此按钮或表格退出(位于窗体右上角的'x')时,我收到以下错误,

用户未处理COMException 来自HRESULT的异常:0x800A01A8

当抛出此错误时,它会按照方法

转到'Connect.cs'文件
public void OnBeginShutdown(ref System.Array custom)
        {

            this.toolbarButton.Delete(System.Reflection.Missing.Value);
            this.toolbarButton = null;

        }

我不确定如何开始排除故障。我做了大量的研究,但遗憾的是没有找到太多。我确定问题可能是我创建了一个没有经验的自定义表单,并且有一些我没有做过或者没有意识到的“内务管理”或“最佳实践”。

有人对此有所了解吗?

1 个答案:

答案 0 :(得分:0)

我在这里猜一点,但COMException的HResult意味着Object Required, 所以,当你打电话给CommandBarButton.Delete时,有两件事是错的。

您已经处理了按钮实例,或者您应该将truefalse传递给Delete来电。

在从工具栏中删除按钮之前,不应放置该按钮,当它被丢弃时,您可能需要执行Marshal.ReleaeComObject才能正确取消引用它。