5

Application.Idleイベントを使用して「遅延」したアクションを実行するサードパーティのWindowsフォームコントロールを使用しています。

アプリケーションをWPFに移動したので、これらのアクションは機能しなくなりました。System.Windows.Forms.Application.Idleイベントが期待どおりに発生しないことがわかりました。

WPFアプリケーションでIdleイベントを発生させて、そのサードパーティのコントロール(WindowsFormsHost内)を引き続き使用できるようにするにはどうすればよいですか?Windowsフォームコントロールを変更することはできません。

4

2 に答える 2

9

WPFアプリケーションでのメッセージループの動作について説明しているMSDNのこのページを読む必要があります。特に、ComponentDispatcherクラスを使用して、WindowsフォームのApplication.Idleイベントにほぼ対応するThreadIdleイベントをキャッチできるようです。

次に、おそらくSystem.Windows.Forms.Application.RaiseIdleメソッドを使用して、コンポーネントが期待するとおりにIdleイベントを発生させることができます。

于 2010-02-26T20:07:37.637 に答える
0

WPFアプリケーションを使用している場合、アプリケーションにWindowsフォームコントロールが含まれている場合でも、実際にはSystem.Windows.Forms.Applicationクラスを使用してアプリケーションを実行することはありません。

代わりに、System.Windows.Applicationクラス(別の名前空間)を使用しています。

于 2010-02-26T20:11:05.180 に答える