Интеграция WPF Outlook дает мне сбой операции - PullRequest
0 голосов
/ 28 марта 2011

Я пишу небольшое wpf-приложение, которое будет читать топ-50 электронных писем (просто не отправляет никаких других сообщений) от пользователей через интеграцию с C # outlook.

Чтобы сделать пользовательский интерфейс моего приложения отзывчивым, я устанавливаю MAPI-соединение и выполняю чтениепапка «Входящие» из фонового рабочего.

Все работает нормально, но для некоторых пользователей случайным образом я получаю следующее исключение.

The operation failed.
   at Microsoft.Office.Interop.Outlook._MailItem.get_SenderName()
   at WPFapplication.WPFOutlookView.OutlookMailItem..ctor(MailItem item)
   at WPFapplication.WPFOutlookView._getEmailsBackgroundWorker_DoWork
          (Object sender, DoWorkEventArgs e)

Это исключение происходит очень случайно, и я не могу воспроизвести его на своем компьютере разработчика.

  1. Можно ли использовать фонового работника для установления подключения Outlook из приложения WPF?(Поскольку некоторые сообщения в Интернете, предлагающие все вызовы OOM outlook, должны происходить в основной ветке outlook. Применимо ли это, даже когда мы пишем надстройку outlook?)некоторые пользовательские машины не имеют каких-либо настроек профиля Outlook или ждут, пока пользователь введет пароль?

ОБНОВЛЕНИЕ: Я не пытаюсь получать электронные письма без присмотра, просто мне нужно, независимо от того, что пользователь ввел.приложение должно загрузить свой пользовательский интерфейс, и оно может ждать получения электронной почты, когда пользователь вводит учетные данные.Если я вызываю OOM в потоке пользовательского интерфейса, то весь пользовательский интерфейс моего приложения не отображается, пока пользователь не введет учетные данные, что является основной причиной вызова OOM в backgroundworker.Мое приложение простое: 1. Представление wpf и список, в котором будут отображаться 20 лучших электронных писем и обновлений всякий раз, когда пользователь получает новое электронное письмо.моя реализация в моем представлении WPF, есть фоновый работник, который вызывает OOM и получает электронные письма и обновляет список, и этот список привязан к списку.Какие изменения вы предлагаете здесь?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

Я нашел решение для этой проблемы, и оно не имеет ничего общего с многопоточностью или backgroundworker.На самом деле проблема была в том, что у пользователя были настроены 2 машины с одним и тем же профилем внешнего вида, и время синхронизации синхронизировалось.Из-за этого, когда я пытаюсь прочитать электронные письма из папки и пользователь удаляет одно и то же электронное письмо с другого компьютера, я получаю исключение «Операция не удалась»Решение заключается в том, что я обрабатываю com исключения во время чтения свойств электронной почты и продолжения работы с остальными электронными письмами.Спасибо за помощь.

0 голосов
/ 29 марта 2011

Для лучшего обзора получите точное исключение ...

Ответы на ваш вопрос:

1) Да, это применимо. ООМ - это СТА.

2) Я не понимаю этого. Позвольте мне попытаться ответить вам больше, если я хочу, чтобы это приложение работало без outlook, я сомневаюсь - чтобы выполнить код OOM, убедитесь, что на машине установлен outlook. Также OOM не подходит для работы в автоматическом режиме (без настройки профиля Outlook / ожидания ввода пароля пользователем). Это ограничение дизайна OOM.

Надеюсь, это поможет.

...