当前,我有一个正在运行的WebSocket-Sharp客户端,该客户端允许用户在button_click事件上发送请求。我还通过RTF或RSP格式的文本框从服务器收到了响应。
Private void InstantiateWebSocket()
{
client=new WebSocket("ws://localhost:80");
client.OnMessage+=new EventHandler<MessageEventArgs>(client_OnMessage);
client.ConnectAsync();
}
和OnMessage
private void client_OnMessage(object sender,MessageEventArgs e)
{
if(e.IsText)
{
Invoke(new MethodInvoker(delegate() richTextBox1.text=e.Data;}));
return;
}
}
我当前面临的问题是,只要客户端收到响应,它就会覆盖较早的响应。我希望将较新的回复写在较旧的回复下方
older response..
new line
newer response
答案 0 :(得分:1)
您需要附加现有的richTextBox1文本:
richTextBox1.Text+=e.Data;
注意:如果以后要使用/处理这些响应,则将它们与时间戳一起存储在某个集合中。
添加一个私有字段,即
private ConcurrentBag<KeyValuePair<DateTime, string>> _messages = new ConcurrentBag<KeyValuePair<DateTime, string>>();
然后在您的消息接收代码内执行此操作:
_messages.Add(new KeyValuePair<DateTime, string>(DateTime.Now, e.Data));