我相信我正在看到"缓存行为"使用
try catch finally
使用FileStream对象。
我正在尝试将PictureBox
图像保存到网络文件路径中,如下所示:
\\img_srv\permitimages\2014\Building\4454-1.tif
以下是执行保存和递增文件名的代码:
public void save_file_name()
{
gen_full_yr_image_path();
string image_path = get_full_yr_image_path();
bool does_file_exist = true;
FileStream test_file = null;
while (does_file_exist)
{
try
{
test_file = new FileStream(image_path, FileMode.Open, FileAccess.Read);
test_file.Close();
test_file.Dispose();
test_file = null;
gen_image_file_name();
gen_full_yr_image_path();
image_path = get_full_yr_image_path();
}
catch
{
does_file_exist = false;
test_file = new FileStream(image_path, FileMode.CreateNew, FileAccess.Write);
test_file.Close();
test_file.Dispose();
test_file = null;
m_scanned_pic.Image.Save(image_path, System.Drawing.Imaging.ImageFormat.Tiff);
}
finally
{
if (null != test_file)
{
test_file.Close();
test_file.Dispose();
}
}
}
}
我所看到的行为如下:
如果\\img_srv\permitimages\2014\Building\4454-1.tif
不存在 ,则尝试打开该文件会导致异常。这是预期的行为。
但是,如果\\img_srv\permitimages\2014\Building\4454-1.tif
确实存在 ,则下一个增量文件名
\\img_srv\permitimages\2014\Building\4454-2.tif
后创建
test_file = new FileStream(image_path, FileMode.Open, FileAccess.Read);
我已验证的内容尚未存在,未创建文件未找到异常。我相信某种缓存行为正在发生,并且我想知道如何处理"重置"一切。
我知道这不应该发生,但我确实已经证实了这一点。这就是为什么我相信现有文件的存在以某种方式缓存在我的代码中。我只是没有看到。
答案 0 :(得分:1)
将test_file.Close();
添加到原始帖子中已更新的catch
后,此问题已得到纠正。我已经看到了与未关闭的数据库游标类似的行为。