55得票2回答
在using() { }块中使用yield return语句时,在执行之前进行处理

我编写了自己的自定义数据层以将数据持久化到特定文件,并使用自定义DataContext模式进行了抽象。 这完全基于.NET 2.0框架(给定目标服务器的限制),因此即使其中一些看起来像LINQ-to-SQL,也不是!我只是实现了类似的数据模式。 请参考下面的示例,其中有一个我尚未解释清楚的...

53得票3回答
WCF中作为返回值的流 - 谁负责释放它?

假设我有以下的WCF实现:public Stream Download(string path) { FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read); return stream;...

49得票10回答
C#条件使用块语句

我有以下的代码,但它看起来很别扭。如何更好地构造它?我需要让我的消费类去实现IDisposable接口并有条件地构建网络访问类,并在完成后进行释放吗? protected void ValidateExportDirectoryExists() { if (use...

49得票2回答
Process.Dispose()实际上是做什么的?

在C#中,class Process继承自class Component,后者实现了IDisposable接口,因此我可以在任何Process对象上调用Dispose()方法。我真的必须这样做吗?我如何知道是否真的需要这样做? 假设我有以下代码: var allProcesses = Sys...

48得票8回答
在.NET中覆盖Dispose(bool disposing)的意义是什么?

如果我在C#中编写一个实现IDisposable的类,为什么仅仅实现它是不够的?public void Dispose(){ ... } 如何处理释放任何未受管控的资源? 是什么?protected virtual void Dispose(bool disposing){ ... } 总...

46得票5回答
C#静态成员是如何被释放的?何时被释放?

我有一个包含大量静态成员的类,其中一些保留了托管和非托管对象的引用。 例如,静态构造函数会在引用类型时立即调用,这会导致我的类启动一个任务的BlockingQueue。例如,当调用其中一个静态方法时。 我实现了IDisposable,它为我提供了处理我创建的任何实例对象上的释放的方法。但是...

45得票4回答
如何从一个方法中返回一个流,并知道它应该被释放?

我有一个方法,它以 FileStream 作为输入。这个方法在一个 for 循环中运行。 private void UploadFile(FileStream fileStream) { var stream = GetFileStream(); // do things w...

44得票8回答
手动销毁C#对象

我相对于Java和C++比较新学习C#,现在有一个关于手动垃圾回收的问题:在C#中是否可以手动销毁一个对象呢? 我知道IDisposable接口,但是假设我正在处理一个我没有编写并且没有实现IDisposable接口的类呢?它将没有.Dispose()方法,所以using { }也不可用,而....

43得票10回答
是否有可能强制使用“using”来处理一次性类?

我需要强制使用 "using" 来释放一个类的新实例。public class MyClass : IDisposable { ... } using(MyClass obj = new MyClass()) // Force to use "using" { }

43得票7回答
Dispose,它是什么时候被调用的?

考虑以下代码:namespace DisposeTest { using System; class Program { static void Main(string[] args) { Console.Wri...