57得票8回答
你应该实现IDisposable.Dispose()方法,使它永远不会抛出异常吗?

对于C++中的等效机制(析构函数),建议通常不要抛出任何异常。这主要是因为这样做可能会终止进程,而这只有在非常罕见的情况下才是一个好策略。 在.NET中,当发生第一个异常时: 首先抛出第一个异常 由于第一个异常,执行finally块 finally块调用Dispose()方法 Dispo...

11得票1回答
为什么即使服务仍在引用DataContract,Dispose也会被调用?

我已经定义了下面这个实现了IDisposable的DataContract:[DataContract] public class RegularFileMetadata : FileMetadataBase, IDisposable { bool _Disposed = false; ...

62得票5回答
当将IDisposable对象传递到另一个对象中时,谁应该调用Dispose?

在将可处理对象传递给其他对象的方法或构造函数时,是否有关于谁应该调用Dispose()的指南或最佳实践呢? 以下是一些例子,说明我的意思。 将IDisposable对象传递给方法(方法是否应在完成后对其进行处理?):public void DoStuff(IDisposable dispo...

15得票7回答
我该如何处理Dispose()方法中的异常?

我想提供一个管理创建和删除临时目录的类。理想情况下,我希望它可在 using 块中使用,以确保无论我们如何离开该块,都会删除该目录:static void DoSomethingThatNeedsATemporaryDirectory() { using (var tempDir = ...

9得票2回答
在执行Process.Start()时,是否需要将其包装在using语句中?

当您开始一个过程并且不关心结果时,这样可以吗? Process.Start(xxx); 或者你应该这样做。 using (Process.Start(xxx)){}

13得票3回答
ClientBase没有实现IDisposable成员。

如果Dispose()方法的声明不可见/未声明,System.ServiceModel.ClientBase抽象类如何实现IDisposable接口? 如果我尝试做同样的事情,我会得到一个错误并且无法编译。 abstract class ATeste : IDisposable { } ...

12得票2回答
如何处理泄漏的 IAsyncDisposable 实例是最佳建议?

我一直在熟悉即将添加到C# 8和.NET Core 3.0的一些内容,但对于正确实现IAsyncDisposable(在撰写本文时,此链接没有提供任何指导),我还不确定。 特别是,当实例未被显式处理时,即它没有被包装在async using(...)中且没有显式调用.DisposeAsync...

8得票1回答
使用Lazy<T>,并设置LazyThreadSafeMode.PublicationOnly和IDisposable。

今天我在使用Lazy&lt;T&gt;时发现了一个有趣的情况(在我看来)。 http://msdn.microsoft.com/zh-cn/library/system.threading.lazythreadsafetymode.aspx PublicationOnly: When ...

13得票2回答
有效关闭WCF 4通道的正确方法

我正在使用以下方式关闭WCF 4通道。这是正确的做法吗?using (IService channel = CustomChannelFactory&lt;IService&gt;.CreateConfigurationChannel()) { channel.Open();...

1880得票20回答
IDisposable接口的正确使用方法

从阅读Microsoft文档了解到,IDisposable接口的“主要”作用是清理非托管资源。 对我来说,“非托管资源”意味着诸如数据库连接、套接字、窗口句柄等东西。但是,我看到过实现Dispose()方法以释放托管资源的代码,这对我来说似乎是多余的,因为垃圾回收器应该已经为你处理了这些。 例...