У меня есть кнопка ленты, которая вставляет текст в Outlook Inspector, изменяя объект MailItem на основе получателей в нем. Метод, который вызывается по нажатию выглядит следующим образом:MailItem.HtmlBody выбрасывает исключение не реализовано
public async void OnTemplateClick(Office.IRibbonControl control)
{
var templateId = control.Tag;
var template = templates.GetTemplateById(templateId);
await templateUi.SetTemplate(control.Context, template);
}
метод SetTemplate выглядит следующим образом:
public async Task SetTemplate(object window, Template template,
SynchronizationContext uiThread = null)
{
Outlook.MailItem currentMailItem = null;
Outlook.Recipients olRecps = null;
Outlook.Recipient recp = null;
Outlook.AddressEntry addEntry = null;
try
{
currentMailItem = GetMailItem(window);
olRecps = currentMailItem.Recipients;
var recipType = Outlook.OlMailRecipientType.olTo;
var recps = from r in olRecps.Cast<Outlook.Recipient>()
where r.Type == (int)recipType
select r;
var numRecps = recps.Count();
var oldBodyHtml = currentMailItem.HTMLBody;
...
Теперь, иногда, что последняя строка, которая извлекает HTMLBody выдает следующее сообщение об ошибке:
System.Runtime.InteropServices.COMException (0x8E604001): Not implemented.
at Microsoft.Office.Interop.Outlook._MailItem.get_HTMLBody()
Эта ошибка не происходит постоянно и ее очень сложно воспроизвести, поэтому мы в основном видим ее в журналах приложений. Мне было интересно, что может вызвать эту ошибку? Я предположил, что это имеет какое-то отношение к времени этого асинхронного вызова, что означает, что сообщение MailItem не полностью сформировано?
Спасибо!
Есть ли способ запустить это в основной теме? –
Несомненно, не используйте async/wait. –