You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebSocket.ReceiveAsync的ValueTask重载使用方法及相关问题咨询

WebSocket ReceiveAsync重载常见问题解答

如何在Memory<T>入参的重载中获取关闭相关属性

当你调用返回ValueTask<ValueWebSocketReceiveResult>的重载时,即使ValueWebSocketReceiveResult本身没有CloseStatus和CloseStatusDescription属性,你也可以直接从当前WebSocket实例的同名属性中读取这两个值。
当接收结果的MessageType为WebSocketMessageType.Close时,.NET运行时已经自动将关闭状态和描述填充到了WebSocket实例的属性中,直接读取即可完成关闭握手的处理逻辑。

ValueTask版本重载的性价比分析

  • 性能优势:ValueTask<T>返回值在接收操作同步完成(例如内核缓冲区已经有可用数据)的场景下,完全避免了传统Task<T>的堆分配,高并发场景下可以大幅降低GC压力,吞吐量提升明显。
  • 灵活性优势:Memory<T>作为入参支持的场景远多于ArraySegment<T>,除了托管数组之外,还可以包装栈内存、非托管内存、内存池块等多种数据源,不需要额外做类型转换,适配更多高性能编程场景。
  • 适用场景:除非你有明确的兼容需求(例如要支持.NET Framework等不支持Memory<T>的旧框架),或者你的业务逻辑必须从接收结果中直接读取关闭属性,否则优先选择这个重载收益更高。

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:21:03