メールを送信すると、Outlook 2010のアドイン(VSTOを使用)が別のスレッドでいくつかのWebサービスコールを実行します。私は、Webサービスコールの結果を表示する小さな非モーダルのポップアップ通知(Skype/yahoo/Windowsライブメッセンジャーのような)を表示したいと思います。Outlookアドインのポップアップ通知(バックグラウンドスレッドの問題からForm.Show()を呼び出す)
私は自分の要件に従ってNotification Window projectをカスタマイズしようとしていました。同じ方法 notifier.DisplayNotification(「テスト」)が呼び出されたとき、しかし、
private void btnOk_Click(object sender, EventArgs e)
{
PopupNotifier notifier = new PopupNotifier();
notifier.DisplayNotification("Test");
}
:私のアドイン次のコードを使用してのフォームのクリックイベントハンドラから呼び出されたとき、正常に動作するようですWebサービス・コールを行っているバックグラウンド・スレッドから、通知が停止します。そのフォームは画面に表示されますが、テキスト、カラー、またはアニメーションは機能しません。 Outlookが終了するまでそこに座っているだけです。
私はいくつかの検索を行ったが、通知者がそのフォームを表示するためにShowDialog()の代わりにShow()メソッドを使用していることが原因である可能性があることを発見しました。また、私はポップアップ通知のモーダルダイアログを望んでいないので、メソッドをShowDialog()に変更することはできません。
他の記事によると、backgroundWorkers、delegate、MethodInvokerなどを使用してメソッドを呼び出そうとしましたが、目的の結果が得られませんでした。
しかし、上記を試しているうちに、ポップアップ通知機能だけでなく単純な形式でも同じことが起こることに気付きました。バックグラウンドスレッドで作成してShow()メソッドを呼び出すと、ちょうど立ち往生しますが、ShowDialog()と同じ状況ではうまくいくようです。
これをどのように修正できるかについてのご意見は大変ありがとうございます。