这是一个 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' 需要对象引用”。
那么,我该怎么做呢?