« [P9]WPF:どうコンテナコントロールを使ったらいいものか?--私の一つの解 MyUIDesigner -- | トップページ | [P11]WPFアプリケーション:フォーカスの設定(取得)と移動 »

[P10] WPF 体制下における Application.DoEvents() メソッドの代替手段

WPF(Windows Presentation Foundation) アプリケーションでは、GDI 体制下の

System.Windows.Forms.Application クラスの DoEvents() メソッド
         [メッセージ キューに現在ある Windows メッセージをすべて処理する]

がなくなってしまいました。

その代替手段として、名前空間: System.Windows.Threading の、
Dispatcher.PushFrame メソッドを以下のようにして使うのだそうです。

C#

public void DoEvents()
{
    DispatcherFrame frame = new DispatcherFrame();
    Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background,
        new DispatcherOperationCallback(ExitFrames), frame);
    Dispatcher.PushFrame(frame);
}

public object ExitFrames(object f)
{
    ((DispatcherFrame)f).Continue = false;
   
    return null;
}

下のMSDN クラスライブラリのページにそのまま載っております。

http://msdn2.microsoft.com/ja-jp/library/system.windows.threading.dispatcher.pushframe(VS.80).aspx

なお、上記の引用コードでは修正済みですが、MSDN クラスライブラリのページにあるものは、new DispatcherOperationCallback(ExitFrames), frame); であるべきところ、記載ミスで (ExitFrame) => 最後の[s]が抜けていますので注意してください。

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
目次に戻る ・・・・ 左欄のカテゴリー 【パソコンの窓】 をクリック
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

|

« [P9]WPF:どうコンテナコントロールを使ったらいいものか?--私の一つの解 MyUIDesigner -- | トップページ | [P11]WPFアプリケーション:フォーカスの設定(取得)と移動 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« [P9]WPF:どうコンテナコントロールを使ったらいいものか?--私の一つの解 MyUIDesigner -- | トップページ | [P11]WPFアプリケーション:フォーカスの設定(取得)と移動 »