相关疑难解决方法(0)

线程最佳实践

我工作的很多项目的线程实现都很差,而且我是那些必须跟踪它们的傻瓜.是否有一种可接受的最佳方式来处理线程.我的代码总是在等待一个永不激活的事件.

我有点像设计模式或其他东西.

multithreading

43
推荐指数
5
解决办法
3万
查看次数

没有垃圾收集的.NET的力量?

我喜欢C#,因为.NET框架的强大功能使得它很容易为Windows开发.但是我也喜欢标准的C++,主要是因为它让我对内存管理进行了微调.有没有办法让两全其美?是否有可以与.NET框架中丰富的库集竞争的C++库?或者有没有办法手动释放我从未使用过的.NET语言中的内存?或者是否可以在标准C++应用程序中使用.NET dll?我知道,我真的在这里伸展,但我相信魔法.

.net c# c++ garbage-collection memory-management

8
推荐指数
2
解决办法
5784
查看次数

当我将它传递给 IDisposable 类时是否需要处理流?

我写了一段代码。我想确保我以正确的方式处理对象。

我有一个像这样的一次性类,用于从非托管资源读取一些数据。

class MyFileReader : IDisposable
{
    private readonly FileStream _stream;

    public MyFileReader(FileStream stream)
    {
        _stream = stream;
    }

    public void Dispose()
    {
        _stream.Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

目前在我的程序中,我像这样处理对象。

        using (FileStream stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read))
        {
            using (MyFileReader reader = new MyFileReader(stream))
            {
                //...
            }
        }
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎没问题。后来我注意到类是通过引用传递的,所以也许如果我处理其中一个,就不需要处理另一个。

我的问题是我可以做这样的事情吗?

        using (FileStream stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read))
        {
            MyFileReader reader = new MyFileReader(stream);
            // Remove IDisposable from MyFileReader and stream will close after using.
        }
Run Code Online (Sandbox Code Playgroud)

还是这个?

        FileStream stream = …
Run Code Online (Sandbox Code Playgroud)

c# idisposable using

5
推荐指数
1
解决办法
1318
查看次数

为什么总是需要在具有IDisposable成员的对象上实现IDisposable?

据我所知,如果你有一个具有IDisposable的成员m的A类,A应该实现IDisposable,它应该在其中调用m.Dispose().

我找不到令人满意的理由,为什么会这样.

我理解规则如果你有非托管资源,你应该提供一个终结器和IDisposable,这样如果用户没有显式调用Dispose,终结器仍然会在GC期间清理.

但是,根据该规则,您似乎不需要具有此问题的规则.例如...

如果我有课:

class MyImage{
  private Image _img;
  ... }
Run Code Online (Sandbox Code Playgroud)

公约规定我应该有MyImage : IDisposable.但是如果Image遵循惯例并实现了终结器而我并不关心资源的及时发布,那有什么意义呢?

UPDATE

我在这里找到了一个很好的讨论.

c# garbage-collection idisposable finalizer

4
推荐指数
2
解决办法
1458
查看次数