【发布时间】:2021-02-27 00:15:19
【问题描述】:
这是一个 Windows 窗体应用程序,它使用 C# 中的 ClientWebSocket 从特定服务器流式传输数据。
我是 C# 新手,所以我只是从其他地方复制/粘贴了有关如何连接和接收来自服务器的实时更新的代码。
这是处理接收数据过程的代码:
static async Task Receive(ClientWebSocket socket)
{
var buffer = new ArraySegment<byte>(new byte[2048]);
do
{
WebSocketReceiveResult result;
using (var ms = new MemoryStream())
{
do
{
result = await socket.ReceiveAsync(buffer, CancellationToken.None);
ms.Write(buffer.Array, buffer.Offset, result.Count);
} while (!result.EndOfMessage);
if (result.MessageType == WebSocketMessageType.Close) break;
ms.Seek(0, SeekOrigin.Begin);
using (var reader = new StreamReader(ms, Encoding.UTF8))
{
var receivedMsg = await reader.ReadToEndAsync();
StreamsPayload payload = JsonSerializer.Deserialize<StreamsPayload>(receivedMsg);
TickerStreamPayload data = payload.data;
Console.WriteLine(data.c);
}
}
} while (true);
}
payload.data 是一个 JSON 对象,我可以使用 Console.WriteLine 很好地使用它。
但是我的表单中有很多标签控件,我想将每个标签的Text 属性填充到来自payload.data 的字符串中。我似乎无法找到如何执行此操作的方法,因为我无法访问 static async Rask Receive 方法中的标签。
例如,我写:
TickerStreamPayload data = payload.data;
MyLabel.Text = data.c;
这不起作用,它显示“非静态字段、方法或属性 'MainForm.MyLabel' 需要对象引用”。
那么,我该怎么做呢?
【问题讨论】:
标签: c# clientwebsocket