我应该如何将此代码移植到wpf?
public void ChangeTextBox(string txt)
{
if (textBox1.InvokeRequired)
{
Invoke(new UpdateText(ChangeTextBox), new object[] { txt });
}
else
{
textBox1.Text += txt + "\r\n";
}
}
答案 0 :(得分:0)
您可以简单地使用控件的Dispatcher
类或应用程序级别Dispatcher
,但在您的情况下,您需要控件的调度程序。另外,请注意,我不必递归调用调用方法来调用它。我只需将textBox.Text
设置为您想要的值即可。
它会在幕后执行Context switch
,从而允许您的控件被修改,因为它被调度到自己的调度程序。
if(!textBox1.Dispatcher.CheckAccess())
{
textbox1.Dispatcher.Invoke(new Action(() => textBox.Text += txt + "\r\n";);
}
else
{
textBox.Text += txt + "\r\n";
}
答案 1 :(得分:0)
你应该可以这样做:
public void ChangeTextBox(string txt)
{
if (!textBox1.Dispatcher.CheckAccess())
{
textBox1.Dispatcher.Invoke(new UpdateText(ChangeTextBox), new object[] { txt });
}
else
{
textBox1.Text += txt + "\r\n";
}
}