如何解决IOException在C#中没有问题?

时间:2014-07-03 10:54:26

标签: c# .net winforms

public Form1()
{
    String _inputfile = @"C:\Input\cea.tif";

    InitializeComponent();

    pb_picturebox.SizeMode = PictureBoxSizeMode.StretchImage;
    pb_picturebox.ClientSize = new Size(515, 515);
    pb_picturebox.Image = null;

    pb_picturebox.Image = Image.FromFile(_inputfile);

    GeoTiffReader tiff = new GeoTiffReader(_inputfile); // <- IOException was...
    IList<IGeometry> result = tiff.ReadToEnd();
    tiff.Close();
}

我得到一个IOException是unhalted错误。 我该如何处理这个问题?它适用于不同的文件名。

此代码示例导致GeoTiffReader类中的异常:

// open the stream for reading
try
{
    _baseStream = FileSystem.GetFileSystemForPath(_path).OpenFile(_path.AbsolutePath, FileMode.Open, FileAccess.Read); // open the file specified by path
}
catch (Exception ex)
{
    throw new IOException("Exception occured during stream opening.", ex);
}

观察: 姓名:ex value:{“进程无法访问文件'C:\ Input \ cea.tif',因为它正由另一个进程使用。”}

1 个答案:

答案 0 :(得分:1)

基于:https://stackoverflow.com/a/6576645/2655508

替换此行

pb_picturebox.Image = Image.FromFile(_inputfile);

这一行

using (FileStream stream = new FileStream(_inputfile, FileMode.Open, FileAccess.Read))
{
    pb_picturebox.Image = Image.FromStream(stream);
}

通过使用using keyword,一旦执行离开using块并且文件不再被锁定,将立即处理流。