У меня проблемы с созданным надстройкой Outlook. Так или иначе Outlook не закрывается должным образом. Я видел все сообщения об использовании ReleaseComObject и тому подобное.
==== ОБНОВЛЕНИЕ ====
Я снова попробовал все это, создав новый пустой проект в новом решении, и теперь, через некоторое время после закрытия Outlook, следующее сообщение об ошибке представляется мне в Visual Studio. Почему-то я думаю, что, должно быть, отключил получение этого исключения в предыдущих решениях. Я не знаю, что это значит (пока), но я пойду на охоту. Может быть, это осветит проблему? Эффект все тот же: Outlook не закрывается.
ContextSwitchDeadlock был обнаружен
Сообщение: CLR не удалось перейти из контекста COM 0x55cdd8 в контекст COM 0x55cf48 в течение 60 секунд. Поток, которому принадлежит целевой контекст / квартира, скорее всего, либо делает ожидание без перекачки, либо обрабатывает очень длительную операцию без перекачки сообщений Windows. Эта ситуация, как правило, оказывает негативное влияние на производительность и может даже привести к тому, что приложение перестает отвечать на запросы или использование памяти постоянно увеличивается с течением времени. Чтобы избежать этой проблемы, все потоки однопоточных квартир (STA) должны использовать примитивы перекачки (такие как CoWaitForMultipleHandles) и регулярно перекачивать сообщения во время длительных операций.
Также, когда я пытаюсь удалить надстройку, когда не в безопасном режиме (например, она была загружена), Oulook блокируется при нажатии кнопки удаления в безопасном центре). Думаю, это та же причина.
===== КОНЕЦ ОБНОВЛЕНИЯ ====
Для отладки происходящего я сделал простейшую вещь:
1) С помощью Visual Studio 2008 я создал новый Outlook 2007 Add In Project
2) Я запустил отладчик с новым дополнением.
3) Через некоторое время я закрываю Outlook, ожидая его правильного закрытия.
Это не так. Код достигает сгенерированного метода ThisAddIn_Shutdown. Но Outlook не закрывается.
Чтобы убедиться, что я не совсем ненормальный, я скачал, скомпилировал и попробовал обширный пример, найденный по http://code.msdn.microsoft.com/ContosoAutoOBA. Использование этого дополнения имеет тот же эффект: Outlook не закрывается.
Я пытался сделать это без других доступных надстроек: это не имеет значения.
Только для записи, ниже вы найдете сгенерированный код.
Я использую Windows 7, Visual Studio 2008, Office 2007, все обновления установлены.
Есть ли кто-то , который может пролить свет на это. Ваша помощь очень ценится.
* * 1036 спасибо * * 1037
Bart
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Outlook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;
namespace OutlookAddIn3
{
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
#region VSTO generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
#endregion
}
}