c# - .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 客户端对象,在这种情况下它工作正常。
我想了解这种行为。请意识到我是套接字编程的新手。
解决方案
推荐阅读
- html - 如何检查没有文件通过表单上传到服务器?
- flutter - 从应用程序(使用颤振)向 ESP8266 发送数据时,我在 arduino 中收到一条乱码消息
- c# - 如何在 C# 中以 CQRS 模式对命令处理程序进行单元测试
- javascript - 显示图像 - Popup ArcGIS API for Javascript
- python - 如何在 Python BeautifulSoup 中抓取网站中的每个页面
- php - 网站设计——360度环游——与橱窗的契合
- winforms - 从互操作 UserControl 访问 VB6 父窗体的 AmbientProperties.UserMode 属性
- javascript - Three.js - 从 BufferGeometry 中挤出某些顶点/面
- python-sphinx - 如何正确使用 Sphinx 侧边栏选项“globaltoc.html”生成可折叠菜单树
- r - rgeos::createPolygonsComment(oobj) 中的错误:在 R 中使用 geojsonio 的孤立洞