单击“发送”按钮后,Outlook 2003邮件窗口将冻结

时间:2011-04-26 14:59:43

标签: c# vsto outlook-addin

我使用VSTO + VS 2008开发了一个Outlook 2003插件。

有一个VB 6应用程序,它创建一个Outlook邮件实例,附加一个文档并显示给用户发送。

当用户点击“发送”按钮时,邮件窗口会冻结。它仅在生产机器上发生。

VB6代码如下:

Private Sub Command1_Click()

Dim objOlApp As New Outlook.Application
Dim objMailItem As Outlook.MailItem
Dim objAttachments As Attachments
Dim arrFilesToAttach(1) As String

    Set objOlApp = New Outlook.Application
    Set objMailItem = objOlApp.CreateItem(olMailItem)
    Set objAttachments = objMailItem.Attachments

    arrFilesToAttach(0) = Text1.Text

    For l = 0 To 0
        strTemp = arrFilesToAttach(l)
        If strTemp <> "" Then
            objAttachments.Add arrFilesToAttach(l)
        End If
    Next

    objMailItem.Display True

    Set objOlApp = Nothing
    Set objMailItem = Nothing
    Set objAttachments = Nothing
End Sub

要查看我的插件是否正在创建问题。我创建了一个简单的outlook addin并在启动事件Inside try ... catch block中添加了一些File IO代码。我禁用了以前的插件并安装了这个新的插件。

结果令人惊讶,样本插件也造成了问题。它将注册表中的LoadBehaviour更改为2以获取示例插件。 try ... catch块没有捕获异常。我已经为Appdomain的unhandledException添加了一个处理程序,但是也没有被解雇。

请帮忙......先谢谢。

1 个答案:

答案 0 :(得分:1)

如果outlook正在为你的插件将loadbehaviour改为2,那通常意味着关于该插件的某些内容在加载期间出错,而outlook正在禁用它。

所有+种类的原因,addin可能在加载时出错(缺少引用的dll,权限等),这是一个问题。

要确定您的插件是否挂起发送过程,只需禁用您的插件(例如将set loadbehavior设置为0)。不需要为此创建示例插件。

如果在禁用插件的情况下工作正常,但启用时失败,则插件中可能出现错误。

那时,我所做的就是开始“释放”代码块。

我的意思是我开始评论入口点(或评论所有入口点并一次取消注释)。

例如,如果你在Startup事件中发生了一些事情,请将其注释掉,重新编译并测试。如果没有失败,请删除评论,并在链的上方注释其他内容。

我也倾向于使用大量的日志记录(通常使用Log4Net,但你可以使用任何东西)。