我正在运行服务器/客户端通信。
现在我想在服务器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
,但我不知道怎么做,而且我无法在Google找到任何有用的东西。
答案 0 :(得分: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);
}
答案 1 :(得分: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);
}