如果由于程序崩溃而未关闭,那么打开的FileStream会发生什么? 它会自动关闭吗? 我不能将它包含在try catch或者使用中,因为我正在使用该文件。 这就像我用一个打开按钮打开文件。
private void button1_Click(object sender, RoutedEventArgs e)
{
fs = new FileStream("Test.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
}
然后我用它做点什么。然后在应用程序的退出或关闭时,我执行close。
fs.Close();
但是,如果发生了某些事情,比如程序崩溃会怎样。 文件是否因为未正确关闭而无法访问? 感谢。
答案 0 :(得分:1)
实际上我们无法知道在这种情况下会发生什么。 MSDN说FileStream Class那个
如果进程因部分文件被锁定而终止,或者关闭具有未完成锁定的文件,则行为未定义。
答案 1 :(得分:0)
当应用程序退出时,无论是有意还是无意,很难找到Windows将会做什么。
MSDN上的Terminating a Process文章描述了流程终止时会发生什么,最值得注意的是。
流程中的任何剩余线程都标记为终止 过程分配的任何资源都被释放 所有内核对象都已关闭 流程代码将从内存中删除 设置过程退出代码 发信号通知过程对象。
稍微偏离主题,但在您的特定代码中,FileStream
实现了IDisposable
,因此您应该研究using关键字,以获取有关确定性资源清理的信息。< / p>