Silverlight で Lync Silverlight アプリケーションを開発してきましたが、現在はそれを WPF に移行しようとしています。
ただし、いくつかのスレッド アフィニティの問題に直面しています。たとえば、Lync クライアントの状態をページのテキストブロックに表示するため、コード ビハインドで状態変更イベント ハンドラーを配線し、Lync クライアントの状態が変化するたびに新しい状態をテキストブロックに書き込みます。
現在、これは Silverlight では完全に機能していましたが、WPF では許可されていないようです。今私の質問は次のとおりです。
Silverlight は WPF のサブセットであるはずなのに、WPF ではなく Silverlight で動作するのはなぜですか?
スレッド アフィニティは重要な概念であり、インボーク ディスパッチャーを使用できることはわかっていますが、イベント ハンドラーとコールバックの形で非同期プログラミングの概念を打ち負かすだけではありませんか?
XAML ページで定義されたボタンがあり、そこで定義されたクリック イベント ハンドラーは他の UI 要素にアクセスできます。上記の問題は発生しません。
しかし、コード ビハインドで LyncClient インスタンスを定義すると、それに定義されたイベント ハンドラーは UI 要素にアクセスできません。UIElements と Silverlight の他のオブジェクトとの間にそのような違いが見つからなかったのはなぜですか?