相关疑难解决方法(0)

关闭和处理 - 要打电话?

读完线程后SqlCommand.Dispose足够吗?关闭和处置WCF服务,我琢磨类,如SqlConnection的或几类从Stream类继承它的问题,如果我收处置,而不是关闭的一个?

.net

153
推荐指数
5
解决办法
11万
查看次数

我应该为流对象调用Close()或Dispose()吗?

类如Stream,StreamReader,StreamWriter等工具IDisposable界面.这意味着,我们可以Dispose()在这些类的对象上调用方法.他们还定义了一个public名为的方法Close().现在让我感到困惑的是,一旦我完成了对象,我该怎么称呼?如果我同时打电话怎么办?

我目前的代码是这样的:

using (Stream responseStream = response.GetResponseStream())
{
   using (StreamReader reader = new StreamReader(responseStream))
   {
      using (StreamWriter writer = new StreamWriter(filename))
      {
         int chunkSize = 1024;
         while (!reader.EndOfStream)
         {
            char[] buffer = new char[chunkSize];
            int count = reader.Read(buffer, 0, chunkSize);
            if (count != 0)
            {
               writer.Write(buffer, 0, count);
            }
         }
         writer.Close();
      }
      reader.Close();
   }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我编写了using()构造,自动调用Dispose()每个对象的方法.但我也称之为Close()方法.这样对吗?

请告诉我使用流对象时的最佳做法.:-)

MSDN示例不使用using()构造,并且调用 …

c# idisposable stream streamwriter streamreader

139
推荐指数
6
解决办法
12万
查看次数

如果使用"using"语句,是否需要在流或编写器上调用Flush()?

Flush()如果我写这样的东西,我不确定是否需要调用使用过的对象:

using (FileStream...)
using (CryptoStream...)
using (BinaryWriter...)
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

它们总是自动刷新吗?什么时候该using声明冲洗它们,当它不(如果可能发生)?

c# using flush stream writer

42
推荐指数
1
解决办法
9965
查看次数

Using语句中的MemoryStream - 我是否需要调用close()

在using语句中使用内存流时,是否需要调用close?例如这里需要ms.Close()吗?

  using (MemoryStream ms = new MemoryStream(byteArray)) 
    {  
      // stuff 

      ms.Close(); 
    }
Run Code Online (Sandbox Code Playgroud)

c# memorystream using using-statement

35
推荐指数
2
解决办法
3万
查看次数

使用使用范围时,是否必须调用Close方法?

using ( var sw = new StreamWriter ( file ) )
{
    XmlSerializer xs = new XmlSerializer ( typeof ( T ) );
    xs.Serialize ( sw, data );
    sw.Close()
}
Run Code Online (Sandbox Code Playgroud)

我知道你不必打电话Dispose但是你必须打电话给这个Close方法sw吗?

.net c# dispose

7
推荐指数
1
解决办法
3355
查看次数

文件流正被另一个进程使用

FileStream f=new FileStream("c:\\file.xml",FileMode.Create);
StreamWriter sf=new StreamWriter(f);
sf.WriteLine(stroka);
sf.Close();
sf.Dispose();
f.Close();
f.Dispose();
FileStream f1=new FileStream("c:\\file.xml",FileMode.Open);
StreamReader sr=new StreamReader("c:\\file.xml");
xmlreader=new XmlTextReader(sr);
sr.Close();
sr.Dispose();
f1.Close();
f1.Dispose();
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

该进程无法访问文件'c:\ file.xml',因为它正由另一个进程使用

我已经全部关闭并且全部处理掉了.有什么问题?

.net c# file stream

4
推荐指数
1
解决办法
7646
查看次数