我有两个 WinForms 应用程序,我需要从 Application2 向 Application1 中的 TextBox 添加文本。我已经使用命名管道和 WCF 成功完成了这项工作。我可以成功地从 Application2 调用 Application1 中的方法,但我得到“在创建窗口句柄之前无法在控件上调用 Invoke 或 BeginInvoke。 ”错误或文本框根本没有更新。
这是我的基本代码。GetMessage
由 Application2 调用。这个根本不更新 TextBox:
public void GetMessage(string msg)
{
UpdateTextbox(msg);
}
private void UpdateTextbox(string msg)
{
this.textBox1.Text += msg + Environment.NewLine;
}
这会引发调用错误:
public void GetMessage(string msg)
{
Action a = () => UpdateTextbox(msg);
textBox1.BeginInvoke(a);
}
我试图通过强制创建句柄来欺骗我的方式,但它也不会更新 TextBox:
public void GetMessage(string msg)
{
IntPtr handle = textBox1.Handle;
Action a = () => UpdateTextbox(msg);
textBox1.BeginInvoke(a);
}
我该怎么办?