【问题标题】:Should a UdpClient be disposed of?是否应该处置 UdpClient?
【发布时间】:2014-08-10 07:49:19
【问题描述】:

在尝试处理 UdpClient 时,我发现这是不可能的。对于以下内容:

UdpClient udpClient = new UdpClient();
udpClient.Dispose();

Visual Studio 显示错误:

'System.Net.Sockets.UdpClient.Dispose(bool)' 由于以下原因无法访问 其防护等级

这是否意味着我应该从UdpClient 继承并公开Dispose(因为whatever implements IDisposable should be disposed of 似乎是共识)?有什么理由我们不应该直接使用这个类吗?还是在调用Close 之后就没有什么可处理的了?

虽然using 声明确实有效 - 不适合在聆听时使用。

【问题讨论】:

  • 如果你应该从它继承,构造函数也会受到保护,但它们是公共的。 The documentation 绝对是误导。
  • protected virtual void UdpClient.Dispose(Boolean) 自 .NET 框架 2.0 以来一直存在,而无参数重载 public void Dispose() 仅在 4.6 之后可用。您的项目针对的是

标签: c# .net resources dispose udpclient


【解决方案1】:

不,你不应该。 你应该打电话给UdpClient.Close ...


在这里查看源码后:http://referencesource.microsoft.com/#System/net/System/Net/Sockets/UDPClient.cs#7682e0ea2c48b5cb

看来您可以调用Close((IDisposable)updClient).Dispose,但在API 方面我认为调用Close 是UDP 客户端的使用方式...

这一切对我来说意义不大......

【讨论】:

猜你喜欢
  • 2012-03-07
  • 2018-05-06
  • 2016-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-07
  • 2021-10-22
相关资源
最近更新 更多