次の方法で共有


UI オートメーション スレッド処理の問題点

更新 : 2007 年 11 月

クライアント アプリケーションが UI スレッドで独自の UI と対話しようとしたときに、Microsoft UI オートメーションが Windows メッセージを使用する方法に起因して競合が発生する場合があります。こうした競合が生じると、パフォーマンスが著しく低下したり、アプリケーションが応答しなくなる場合があります。

クライアント アプリケーションが、独自の UI を含め、デスクトップ上のすべての要素と対話する場合は、すべての UI オートメーションの呼び出しを個別のスレッドで行う必要があります。これには、要素の検索 (たとえば、TreeWalker または FindAll メソッドを使用) やコントロール パターンの使用が含まれます。

UI オートメーション イベント ハンドラは常に非 UI スレッドで呼び出されるため、このイベント ハンドラ内での UI オートメーションの呼び出しは安全に行うことができます。ただし、クライアント アプリケーションの UI から発生する可能性があるイベントをサブスクライブする場合は、AddAutomationEventHandler または関連メソッドを非 UI スレッドで呼び出す必要があります。同じスレッド上のイベント ハンドラは削除します。