【问题标题】:How to use the data received from ClientWebSocket in C#? [duplicate]如何在 C# 中使用从 ClientWebSocket 接收的数据? [复制]
【发布时间】: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


    【解决方案1】:

    我发现了这个问题。我刚刚在声明Received(ClientWebSocket) 方法时删除了static 关键字,现在我可以访问表单的标签了。我不知道为什么我复制/粘贴的代码的作者使用了 static 关键字,但我很高兴它现在可以工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多