2

サーバー/クライアント通信を実行しています。今、私はサーバーに何かを書き、textBoxそれをクライアントに表示したいtextBoxので、静的な方法を使用してサーバーからクライアントにメッセージを送信しています:

    static void Client_MessageReceived(object sender, MessageEventArgs e)
    {
        //Client only accepts text messages
        var message = e.Message as ScsTextMessage;
        if (message == null)
        {
            return;
        }
    }

textBoxここで、この静的メソッドからクライアントにメッセージを追加したいと思います。なんらかの必要があると思いinvokeますが、どうすればいいのかわからず、グーグルで役に立つものが見つかりません。

4

2 に答える 2

1

メソッドを呼び出す

public void AppendText(string what, bool debug = false)
     {
         if (debug)
             return;
         if (this.InvokeRequired)
         {
             this.Invoke(
                 new MethodInvoker(
                 delegate() { AppendText(what); }));
         }
         else
         {
             DateTime timestamp = DateTime.Now;
             tbox.AppendText(timestamp.ToLongTimeString() + "\t" + what + Environment.NewLine);
         }
     }

メッセージ受信方法

 private void Client_MessageReceived(object sender, MessageEventArgs e)
        {
            //Client only accepts text messages
            var message = e.Message as ScsTextMessage;
            if (message == null)
            {
                return;
            }
            AppendText(message.Text, false);

            //Console.WriteLine("Server sent a message: " + message.Text);
        }
于 2013-01-18T23:10:37.187 に答える
0
// Program.cs

public static ProgramForm Form;

publi static void Main()
{
    // ...
    Application.Run(Form = new ProgramForm());
    // ...
}

public static void ChangeText(String message)
{
    Form.TextBox1.Text = message;
}

// ProgramForm.cs

private void Client_MessageReceived(object sender, MessageEventArgs e)
{
    if (e.Message != null)
        Program.ChangeText(e.Message);
}
于 2013-01-18T23:41:52.747 に答える