首页 > 解决方案 > .net WebSocketClient 的 ConnectAsync 类抛出错误“无法访问已处置的对象 ClientWebSocket”。

问题描述

我正在尝试不断地监听服务器以进行连接,这样只要服务器可用,客户端就会建立连接。

代码示例如下:

internal async Task ConnectAsync()
{
    try
    {
        if (myWebSocketClient.State != WebSocketState.Open)
        {
            myWebSocketClient.ConnectAsync(InitUri(), CancellationToken.None).Wait(myCancellationToken);
            OnConnectionChange(true, aNumberOfConnectionTries);
        }
    }
    catch (Exception aException)
    {
        Console.WriteLine("An error occured while connecting to server {0}", aException);
        OnConnectionChange(false, aNumberOfConnectionTries);
        aNumberOfConnectionTries++;
        await ConnectAsync();
    }
}

我第一次收到错误“无法连接到远程服务器”,这是有道理的,因为服务器不可用。但从下次开始,我收到错误““无法访问已处置的对象。\r\n对象名称:'System.Net.WebSockets.ClientWebSocket'。”

我理解错误,但我不明白为什么客户端对象被处置。客户端对象是否仅对一个连接请求有效。

我试图在 connect 方法中创建一个新的 websocket 客户端对象,在这种情况下它工作正常。

我想了解这种行为。请意识到我是套接字编程的新手。

标签: c#.netwebsocketnetwork-programming

解决方案


推荐阅读