VSTO Outlook добавить в проблему - PullRequest
0 голосов
/ 27 октября 2009

У меня проблемы с созданным надстройкой 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
    }
}

Ответы [ 3 ]

1 голос
/ 28 октября 2009

Похоже, что проблема связана с надстройкой Microsoft CRM. Я отключил его ранее (фактически отключил все плагины Outlook), но, видимо, этого недостаточно. Фактически удаление этого из моего компьютера решило проблему.

Кажется, есть обновление 7 для плагина Microsoft CRM, но он отказывается устанавливать на мою машину. Увы, по крайней мере, я могу продолжить с моим собственным подключаемым модулем Outlook. Я сохраню его публикацию на своем экране, как свою новую систему CRM.

0 голосов
/ 27 октября 2009

Сначала. Какую версию офисного пакета обновлений вы используете. В SP2 есть множество исправлений, помогающих завершить работу.

Вы говорите, что, если у вас нет установленного надстройки, Outlook закрывается нормально? Как мне интересно, если у вас есть какой-либо другой индер траст центр.

0 голосов
/ 27 октября 2009

Ах, дни развития ВСТО!

Из памяти - чтобы исправить это:

  1. Закрыть все экземпляры Outlook, работающие (диспетчер задач, конечный процесс)
  2. Запустите приложение с помощью кнопки отладки в VS.NET

из памяти; он немного проигрывается, когда уже запущен экземпляр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...