Как сохранить электронное письмо на диск, чтобы Outlook не отвечал / не выглядел занятым?

Я написал небольшой Outlook-PlugIn (VSTO/C#), который хранит определенные электронные письма в указанном пользователем каталоге. Моя проблема в том, что иногда есть электронные письма с большими вложениями и / или много (50+) электронных писем, которые нужно сохранить одновременно.

Плагин обрабатывает все это, но в некоторых случаях Outlook перестает отвечать на запросы и появляется индикатор выполнения. Есть ли способ предотвратить это? (например, другой способ сохранения этих писем)

Если нет, возможно, у кого-то есть идея, как «обойти» это поведение (например, остановить сохранение, когда Outlook «используется» пользователем)

* это происходит в .NET 4 и должно быть совместимо с Outlook 2007 и Outlook 2010.


person Steffen Winkler    schedule 20.11.2012    source источник
comment
Вы в настоящее время сохраняете электронные письма на диск асинхронно?   -  person ry8806    schedule 20.11.2012
comment
нет, не знаю. Я просто вызываю SaveAs(filepath);. Я даже не знал, что это возможно. Кажется, я не могу найти ничего об асинхронном методе сохранения, не могли бы вы рассказать мне немного больше?   -  person Steffen Winkler    schedule 20.11.2012


Ответы (1)


Вы можете определить делегата, который будет запускать метод асинхронно. Это будет означать, что (возможно) долго работающий SaveAs(filepath) не будет блокировать пользовательский интерфейс и заставит Outlook отображать индикатор выполнения/перестанет реагировать на ввод пользователя.

Действительно хороший простой пример этого стиля асинхронного кодирования можно найти здесь Использование AsyncCallBack

А вот официальная статья MSDN

person ry8806    schedule 20.11.2012
comment
о, вы имели в виду запуск самого метода SaveAs как асинхронного оператора. Я не думаю, что это решит мою проблему. Метод SaveAs уже вызывается в потоке, проблема заключается в том, что пользовательский интерфейс Outlook каким-то образом «используется» чем-то внутри метода SaveAs. В любом случае, я попробую, даже если это не решит эту проблему, у него есть некоторые преимущества. - person Steffen Winkler; 20.11.2012
comment
да, это лучшее, что я мог придумать. Немного погуглил и, похоже, не нашел каких-либо открытых методов ожидаемого С# или чего-то еще. Дайте мне знать, как вы поживаете! - person ry8806; 20.11.2012