2011-06-29 7 views
0

私は予定表アイテムに情報を追加するOutlook 2007アドインを持っています。私は、古いCalendar Inviteが有効ではなくなったExchangeユーザーを含む場合、連絡先を検索しようとしている約90秒間Outlookがハングアップするという問題が発生しています。Outlook 2007 Addin Locking Outlook削除されたExchangeユーザーへのアクセス

私は、Exchangeユーザーの電子メールに非同期でアクセスしたり、ユーザーが削除されたことを検出して単純にスキップする方法があるかどうかを判断しようとしています。基本的に、1分半の間、UIがぶら下がるのを止めるためのもの。

AddressEntry ae = appointmentItem.Recipients[0]; 
ExchangeUser eu = ae.GetExchangeUser();//hangs here if user is not in cached address book 

答えて

0

私は、プロパティにアクセスし、この場合どのように反応するか見るために、RDOでRedemptionライブラリを使用しようとします。 http://www.dimastr.com/redemption/を参照し、「RDORecipientsオブジェクトコレクション」を探します。

+0

私たちは2003年のクライアントで引き換えを利用していました。私はそれがパッケージに追加するサイズのために、それを避けようとしていました。 – blakeb

+0

本当にアクセスする必要があるのは、受信者の電子メールアドレスだけです。交換の一部を使用する方法、または交換ユーザーにアクセスせずに受信者の電子メールアドレスにアクセスする方法はありますか?私が検討しているもう1つのオプションは、最初の連絡先にアクセスするまで待つのではなく、Exchangeをバックグラウンドで接続しようとすることです。 – blakeb

0

償還は決して悪い考えではありません。これは非常に優れたライブラリです。

もう1つのオプションは、別のスレッドでGetExchangeuser()を呼び出すことです。これにより、ブロックが回避されます。もちろん、あなたはこのケースで何をすべきかを把握する必要があります。「待ってください」ダイアログを表示するか、通話中に何か他のことをさせる必要があります。

+0

お返事ありがとうございます。私はこの考えを持っていましたが、私の主な関心事は、これは、「別のスレッドでOutlookオブジェクトモデルにアクセスする」という資格があるということです。これは、多くの場所で読んだことが、ハングアップやOutlookのクラッシュを引き起こす可能性があります。 – blakeb

+0

これは絶対に正しいです。あなたは他のリソースと話すためにスレッドを使うことができます。 Outlookと直接接続していないが、スレッドでOutlookと対話するデータベースはお勧めしません。さらに、Outlookのアイテムを開くときにこれを行いたいので、これがうまくいくのではないかと心配しています。 –

関連する問題