【发布时间】:2012-05-11 08:57:19
【问题描述】:
我有一个执行模拟并不断读取/写入二进制文件的表单应用程序。如果您让它运行,一切都会正常工作。但是,如果表单已关闭/模拟被中止,则文件流未正确关闭 - 使文件处于锁定状态。 有没有办法确保所有流都关闭?我尝试了以下 - 但它没有效果...... 非常感谢提前, T
public BinaryWriter BinWrite;
public BinaryReader BinRead;
public BinaryWriter EnvBinWrite;
public BinaryReader EnvBinRead;
public void theForm_FormClosing(object sender, FormClosingEventArgs e)
{
//Close all binary file reader/writers -- crashes if it cannot overwrite files
foreach (Building B in AllBldgs)
{
try
{
EnvBinRead.Close();
}
catch
{ continue; }
try
{
EnvBinWrite.Close();
}
catch
{ continue; }
try
{
BinRead.Close();
}
catch
{ continue; }
try
{
BinWrite.Close();
}
catch
{ continue; }
}
}
【问题讨论】:
-
有异常发生吗?
-
不,因为你把它们都吃了。删除 try..catch 块并查看是否发生。
-
啊,好吧...对不起,我是编码新手-我使用了 try catch,因为 Reader 和 Writer 并不总是初始化...将在没有 try catch 的情况下尝试 - 感谢您的回复
-
在关闭它们之前检查它们是否已初始化... Try/catch 应该作为最后的手段,而不是一劳永逸的解决方案
-
这段代码没有任何意义。你有四个流,你试图在一个完全不相关的循环内关闭每个流——(多次!)——同时你
continue正在捕获,中止所有其余的关闭。 -- 从这段代码中很不清楚你想要完成什么。
标签: c# filestream binaryreader binarywriter