2 つの 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;
}
これは Invoke エラーをスローします:
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);
}
私は何をすべきか?