防止来自服务器的响应覆盖旧的响应
Prevent Response from server to overwrite older responses
目前我有一个可用的 WebSocket-Sharp 客户端,它允许用户在 button_click 事件上发送请求。我还在 richtextbox(NTF 或 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
您需要附加现有的 richTextBox1 文本:
richTextBox1.Text+=e.Data;
注意:如果您想 use/process 这些响应稍后将它们与时间戳一起存储在某个集合中。
添加一个私有字段,即
private ConcurrentBag<KeyValuePair<DateTime, string>> _messages = new ConcurrentBag<KeyValuePair<DateTime, string>>();
然后在您的消息接收代码中执行此操作:
_messages.Add(new KeyValuePair<DateTime, string>(DateTime.Now, e.Data));
目前我有一个可用的 WebSocket-Sharp 客户端,它允许用户在 button_click 事件上发送请求。我还在 richtextbox(NTF 或 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
您需要附加现有的 richTextBox1 文本:
richTextBox1.Text+=e.Data;
注意:如果您想 use/process 这些响应稍后将它们与时间戳一起存储在某个集合中。
添加一个私有字段,即
private ConcurrentBag<KeyValuePair<DateTime, string>> _messages = new ConcurrentBag<KeyValuePair<DateTime, string>>();
然后在您的消息接收代码中执行此操作:
_messages.Add(new KeyValuePair<DateTime, string>(DateTime.Now, e.Data));