Wpf

WPFのWinfromにApplication.DoEvents()メソッドを実装します



Implement Application



WinfromのApplication.DoEvents()メソッドに精通している友人は、このメソッドを使用している必要があります。このメソッドは、現在メッセージキューにあるすべてのWindowsメッセージをすぐに処理できます。たとえば、ボタンクリックイベントでは、次のコードに示すように、ラベルのTextプロパティを毎秒変更する必要があります。

private void button1_Click(object sender, EventArgs e) { for (int i = 0 i <50 i++) { Thread.Sleep(500) this.label1.Text = i.ToString() } }

コンパイルして実行し、ボタンをクリックすると、ラベルが変更され続けることはありません。実行後は49のみが表示されます。また、Application.DoEvents()メソッドを使用すると、変更されているテキストを確認できます。



private void button1_Click(object sender, EventArgs e) { for (int i = 0 i <50 i++) { Thread.Sleep(500) this.label1.Text = i.ToString() Application.DoEvents() } }

さて、あまりナンセンスな話をしないでください、あなたが理解していない場合は参照することができます Application.DoEventsメソッド

WPFにはApplication.DoEvents()メソッドはありません。次の実装コードを見てください。



public static class DispatcherHelper { [SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)] public static void DoEvents() { DispatcherFrame frame = new DispatcherFrame() Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(ExitFrames), frame) try { Dispatcher.PushFrame(frame) } catch (InvalidOperationException) { } } private static object ExitFrames(object frame) { ((DispatcherFrame)frame).Continue = false return null } }

転送:

DispatcherHelper.DoEvents()