Windowsフォームにこの機能があり、作業をWPFに転送しようとしています。転送後、WPFでサポートされていないInvokeRequired
ことに気付きました。BeginInvoke
関数を WPF に変換する正しい方法を探しています。
delegate void DisplayInvoker(string text, MessageType type);
private void DisplayinRichbox(string text, MessageType type = MessageType.Normal)
{
if (this.InvokeRequired) // not support by WPF
{
this.BeginInvoke(new DisplayInvoker(DisplayinRichbox), text, type); // Not support by WPF
return;
}
txt_Log.AppendText(String.Format("[{0}] {1}{2}\r\n",
DateTime.Now, type == MessageType.Incoming ? "<< " : type == MessageType.Outgoing ? ">> " : "", text));
txt_Log.ScrollToCaret(); // not support by WPF
}
メインクラスのスレッドループは次のとおりです。
while (bWaiting == true)
{
//System.Windows.Forms.Application.DoEvents(); // i comment it because i cant find equivalent in WPF
System.Threading.Thread.Sleep(15);
}