相关疑难解决方法(0)

处理streamreader会关闭流吗?

我正在向要写入的方法发送一个流,在这些方法中我使用的是二进制阅读器/ wrtier.当读取器/写入器被处理时,using或者仅在未被引用时,流也被关闭?

我会发送一个BinaryReader/Writer,但我也在使用StreamReader(也许我应该绕过它.我只使用GetLine和ReadLine).如果每次作家/读者关闭时关闭流,这是非常麻烦的.

c# stream streamreader

159
推荐指数
4
解决办法
6万
查看次数

将'IDisposable'嵌套在一个'using'语句中

关于在单个'using'语句中使用嵌套一次性用法的快速问题:我应该写出每个一次性使用语句,还是可以将它们嵌入一个?例:

using( FileStream inFile = new FileStream( "myFile.txt", FileMode.Open ) )
using( GZipStream gzip = new GZipStream( inFile, CompressionMode.Decompress ) )
using( FileStream outFile = new FileStream( "myNewFile.txt", FileMode.CreateNew ) )
{
    gzip.CopyTo( outstream );
}
Run Code Online (Sandbox Code Playgroud)

using( GZipStream gzip = new GZipStream( new FileStream( "myFile.txt", FileMode.Open ), CompressionMode.Decompress ) )
using( FileStream outFile = new FileStream( "myNewFile.txt", FileMode.CreateNew ) )
{
    gzip.CopyTo( outstream );
}
Run Code Online (Sandbox Code Playgroud)

好奇的是,当块执行完毕时,来自"myFile.txt"的未命名的FileStream会被清除,因为它位于带有GZipStream的using语句中,或者它是否保持打开状态并且需要在此之后的某个时间进行清理.

编辑:为了清楚,我不是在询问有关使用语句嵌套的问题.我问的是,在另一个IDisposable的'using'语句中创建的IDisposable是否会在块的末尾被处理掉.任何解释为什么或为什么不会被赞赏.

c# idisposable using-statement

6
推荐指数
1
解决办法
259
查看次数

是否会在新的 SQL 连接上提供带有新 SQLConnection 调用的 SQLCommand Dispose?

前言

我知道通常大多数 SQL 调用都是这样运行的

using(var cnn = new DbConnection("YOURCONNECTIONSTRINGHERE") 
{
  cnn.Open(); //Open the connection.
  using(var cmd = new DbCommand("YourSQL", cnn)
  {
    cmd.ExecuteScalar; //Or whatever type of execution you want.
  }
}
Run Code Online (Sandbox Code Playgroud)

这将正确处理连接和命令。

我的问题:这段代码会正确处理这两个对象吗?

  using(var cmd = new SqlCommand("YourSQL", new Connection("YOURCONNECTIONSTRINGHERE"))
  {
    cmd.ExecuteScalar; //Or whatever type of execution you want.
  }
Run Code Online (Sandbox Code Playgroud)

实际上,我正在使用一种提供并打开连接的方法。

public SqlConnection Connection()
{
    var product = new SQLConnection("ConnectionString");
    product.Open();
    return product;
}
Run Code Online (Sandbox Code Playgroud)

所以在一天结束时,电话看起来像这样:

  using(var cmd = new SqlCommand("YourSQL", Connection())
  {
    cmd.ExecuteScalar; //Or whatever type of execution you want. …
Run Code Online (Sandbox Code Playgroud)

c#

2
推荐指数
1
解决办法
145
查看次数

标签 统计

c# ×3

idisposable ×1

stream ×1

streamreader ×1

using-statement ×1