为什么我的VSTO Outlook加载项会在首次运行时挂起?

时间:2010-01-31 18:04:10

标签: vsto add-in outlook-2003

我使用C#和Visual Studio 2008编写了这个小小的MS Outlook 2003 VSTO加载项。它用于检查正在发送的每个邮件项目中是否有“附加”字样,如果找到,则检查号码附件。如果该数字为零,则询问用户他们是否真的要发送消息。它应该像Gmail实验室功能一样工作。

奇怪的是它可以工作,但是第一次运行它时,我会暂停,就像邮件项目窗口挂起约45秒。一旦它通过它,它在Outlook打开的剩余时间内运行得非常快。如果我关闭Outlook,那么下次我重新打开它并发送消息时,我会再次等待。

任何想法,人民?

以下是我的加载项的代码:

namespace OutlookAttacher
{
    public partial class ThisAddIn
    {
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            this.Application.ItemSend += new Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);
        }

        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }

        void Application_ItemSend(object Item, ref bool Cancel)
        {
            if (Item is Microsoft.Office.Interop.Outlook.MailItem)
            {
                Microsoft.Office.Interop.Outlook.MailItem currentItem = Item as Microsoft.Office.Interop.Outlook.MailItem;
                Cancel = true;

                if (currentItem.Body.Contains("attach"))
                {
                    if (currentItem.Attachments.Count > 0)
                    {
                        Cancel = false;
                        //MessageBox.Show("This message will be sent now.");
                        currentItem.Send();
                    }
                    else
                    {
                        DialogResult ans = MessageBox.Show("This message has no attachments. Are you sure you want to send it?", "OutlookAttacher", MessageBoxButtons.YesNo);
                        if (ans.Equals(DialogResult.Yes))
                        {
                            Cancel = false;
                            //MessageBox.Show("This message will be sent now.");
                            currentItem.Send();
                        }
                    }
                }
                else
                {
                    Cancel = false;
                    //MessageBox.Show("This message will be sent now.");
                    currentItem.Send();
                }
            }
        }
    }
}

欢迎任何改进代码的建议,因为这是我第一次尝试使用Outlook加载项。

更新:我在5年戴尔笔记本电脑,2 GB Ram以及我不知道哪款Intel CPU上运行此操作。我喜欢添加跟踪/调试它的想法。我将不得不弄清楚如何单步执行代码,以便我可以看到它可能需要花费最长时间。谢谢你们!

1 个答案:

答案 0 :(得分:0)

好的,我真的很尴尬。我看到的延迟只是Outlook与我的Exchange服务器同步。我在测试时我在家,Outlook仍在通过HTTP连接。我今天看到它在办公室工作得很快,所以没有HTTP。无论如何,谢谢你的回复。

: - )