Por que meu suplemento VSTO Outlook está pendurado na primeira corrida?
-
24-09-2019 - |
Pergunta
Eu escrevi este pequeno suplemento VSTO do MS Outlook 2003 usando o C# e o Visual Studio 2008. Ele destina-se a verificar cada item de correio que está sendo enviado para a palavra "Anexar" no corpo e, se encontrado, verifique o número de anexos. Se esse número for zero, pergunte ao usuário se eles realmente pretendem enviar a mensagem. Deveria funcionar como o recurso Gmail Labs, que faz a mesma coisa.
O estranho é que ele funciona, mas a primeira vez que o corro, recebo uma pausa, como a janela do item de correio é pendurado por cerca de 45 segundos. Uma vez que passa por isso, ele funciona muito rápido pelo resto do tempo em que o Outlook aberto. Se eu fechar o Outlook, porém, na próxima vez que a reabrir e enviar uma mensagem, terei essa espera novamente.
Alguma ideia, povos?
Aqui está o código do meu suplemento:
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();
}
}
}
}
}
Quaisquer sugestões para melhorar o código também são bem-vindas, pois esta é minha primeira facada em um suplemento do Outlook.
Atualizar: Estou executando isso em um laptop Dell de 5 anos, 2 GB de RAM e Intel CPU. Gosto da ideia de adicionar um rastreio / depurar. Terei que descobrir como passar pelo código para que eu possa ver onde ele pode estar demorando mais tempo. Obrigado Y'All!
Solução
Ok, estou realmente envergonhado. O atraso que eu estava vendo foi apenas o Outlook sincronizando com o meu servidor Exchange. Eu estava em casa quando estava testando e o Outlook ainda estava se conectando via HTTP. Estou vendo isso funcionar rápido hoje, no escritório, então não http. Obrigado pelas respostas de qualquer maneira.
:-)