相关疑难解决方法(0)

IDisposable.Dispose()可以安全地多次调用吗?

IDisposable的实现是否可以安全地多次调用Dispose()?或者相反?大多数.NET Framework类采用什么方法?

具体来说,System.Data.Linq.DataContext.Dispose()多次通话是否安全?

我问的原因是因为我想知道是否需要这种额外保护:

public override void Dispose(bool disposing)
{
    // Extra protection...
    if (this.obj != null)
    {
        this.obj.Dispose();
        this.obj = null;
    }

    // Versus simply...
    this.obj.Dispose();

    base.Dispose(disposing);
}
Run Code Online (Sandbox Code Playgroud)

在处理类的IDisposable成员时,或者我是否应该在this.obj.Dispose()不关心之前调用它的情况下调用它.

.net c# idisposable

41
推荐指数
2
解决办法
9727
查看次数

CryptoStream可以让基本流保持打开状态吗?

我创建了一个MemoryStream,传递给CryptoStream写作.我希望CryptoStream加密,然后让MemoryStream我开放,然后阅读其他内容.但是一旦CryptoStream被处置,它MemoryStream也会被处置掉.

可以以某种方式打开CryptoStream基地MemoryStream吗?

using (MemoryStream scratch = new MemoryStream())
{
    using (AesManaged aes = new AesManaged())
    {
        // <snip>
        // Set some aes parameters, including Key, IV, etc.
        // </snip>
        ICryptoTransform encryptor = aes.CreateEncryptor();
        using (CryptoStream myCryptoStream = new CryptoStream(scratch, encryptor, CryptoStreamMode.Write))
        {
            myCryptoStream.Write(someByteArray, 0, someByteArray.Length);
        }
    }
    // Here, I'm still within the MemoryStream block, so I expect
    // MemoryStream to still be usable. …
Run Code Online (Sandbox Code Playgroud)

c# stream objectdisposedexception

21
推荐指数
5
解决办法
4593
查看次数

如何在不重新打开文件的情况下读取然后写入/附加到文本文件?

如何打开 FileStream,读取文件内容,然后在不重新打开文件的情况下写入(追加)到文件?

在这种情况下 StreamReader/StreamWriter 的一个问题是它们承担了底层流的所有权。由于目标是 .NET 4,因此不能使用“leaveOpen”构造函数重载。(我不在乎是否使用了 StreamReader/StreamWriter - 但它们确实提供了 ReadLine 和 WriteLine 操作。)

总之,与问题相关的问题代码示例以及应用程序将如何访问和管理 FileStream 的生命周期(即打开一次):

var fs = File.Open(..);
using (var reader = new StreamReader(fs)) {
   // Do all reading here, then ditch the reader
}  // .. but StreamReader will Close the FileStream

SeekToEnd(fs);

using (var writer = new StreamWriter(fs)) {
   // Do all writing here, then ditch the writer
   // .. ideal, but FileStream already Closed
}

// …
Run Code Online (Sandbox Code Playgroud)

.net c# .net-4.0 filestream streamreader

3
推荐指数
1
解决办法
1526
查看次数