if (windows.InvokeRequired)//determine the thread now whether is the thread that creat the ui { if (windows.Text == "")//it is not { windows.BeginInvoke(new Action<string>(s =>//avoid accorss thread is invalid { this.windows.Text = string.Format("{0}", txt); }), txt); } else { windows.BeginInvoke(new Action<string>(s => { this.windows.Text = string.Format("{0}\r\n{1}", windows.Text, txt); }), txt); } }这段代码中我的if (windows.Text == "")报错怎么修改
时间: 2023-06-26 07:09:36 浏览: 147
网络编程往年题库.docx
在跨线程访问 UI 控件时,必须使用 UI 线程来更新控件。在这种情况下,最好使用 Invoke 或 BeginInvoke 方法来执行 UI 操作。您的代码中使用了 BeginInvoke 方法。
关于您的问题,如果您想检查文本框中是否有文本,可以使用以下代码:
if (string.IsNullOrEmpty(windows.Text))
或者
if (windows.Text.Length == 0)
所以您的代码应该修改为:
if (windows.InvokeRequired)
{
if (string.IsNullOrEmpty(windows.Text))
{
windows.BeginInvoke(new Action<string>(s =>
{
this.windows.Text = string.Format("{0}", txt);
}), txt);
}
else
{
windows.BeginInvoke(new Action<string>(s =>
{
this.windows.Text = string.Format("{0}\r\n{1}", windows.Text, txt);
}), txt);
}
}
阅读全文