0

私の Outlook アドインでは、新しい rdoSession オブジェクトを作成し、次のように rdoSession オブジェクトを使用する必要があるたびに mapi オブジェクトを設定します。

Redemption.RDOSession セッション = Redemption.RedemptionLoader.new_RDOSession(); session.MAPIOBJECT = outlookApplicaitonObject.Session.MAPIOBJECT;

静的な Redemption.rdoSession オブジェクトをグローバルに 1 つ持つ可能性はありますか? 静的な RdoSession オブジェクトを宣言しましたが、次の例外がスローされることがあります。

タイプ 'System.__ComObject' の COM オブジェクトをインターフェイス タイプ 'Redemption.IRDOSession' にキャストできません。IID '{E54C5168-AA8C-405F-9C14-A4037302BD9D}' を持つインターフェイスの COM コンポーネントでの QueryInterface 呼び出しが次のエラーにより失敗したため、この操作は失敗しました: タイプ ライブラリ/DLL の読み込み中にエラーが発生しました。(HRESULT からの例外: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))

この理由は何ですか?私がやろうとしていることは可能ですか?

4

1 に答える 1

1

複数のスレッドを使用していますか? 各スレッドで RDOSession のインスタンスを作成する必要があります。詳細については、 http: //www.dimastr.com/redemption/faq.htm#Threads を参照してください。

Namespace.MAPIOBJECT の値を別の変数に格納して (IMAPISession がスレッド間でマーシャリングされ、OOM または Redemption オブジェクトではなく)、RDOSession.MAPIOBJECT プロパティをスレッドローカル インスタンスの各スレッドでその変数に設定できます。 RDOSession。

于 2016-06-10T10:41:44.203 に答える