我創建了一個從我的數據庫中讀取數據的方法,該數據庫有一個存儲圖像的blob字段。 此方法用於讀取圖像以及其他所有字段。 當我運行我的應用程序它的工作原理和窗體顯示所有的細節,但如果我關閉窗體並重新打開它,我結束了這個錯誤。FileStream錯誤 - 進程無法訪問該文件...被另一個進程使用
IO例外是未處理
類型 'System.IO.IOException' 的未處理的異常出現在mscorlib.dll
附加信息:該方法不能訪問該文件「C:\用戶\ MyName \ Documents \ Visual Studio 2013 \ Projects \ MyApp \ MyApp \ bin \ Debug \ pic0jpg'因爲它正在被另一個進程使用。「
我試過把filestream對象放在using語句中,解決方案,但錯誤直到存在。 任何幫助,將不勝感激,謝謝。
public void loadPlane()
{
//convert picture to jpg and load other details
MySqlDataAdapter sqladapt;
DataSet dataSet;
DatabaseConnector dbcon = new DatabaseConnector();
dbcon.OpenConnection();
sqladapt = new MySqlDataAdapter();
sqladapt.SelectCommand = dbcon.InitSqlCommand("SELECT * FROM plane");
dataSet = new DataSet("dst");
sqladapt.Fill(dataSet);
dbcon.CloseConnection();
DataTable tableData = dataSet.Tables[0];
//use from iplane class
IPlane.countPlane = tableData.Rows.Count;
for (int i = 0; i < IPlane.countPlane; i++)
{
IPlane.planeObj[i] = new NormalPlane();
DataRow drow = tableData.Rows[i];
string plName = "pic" + Convert.ToString(i);
FileStream FSNew = new FileStream(plName+"jpg",FileMode.Create);
byte[] blob = (byte[])drow[5];
FSNew.Write(blob,0,blob.Length);
FSNew.Close();
FSNew = null;
IPlane.planeObj[i].PlaneImage=(Image.FromFile(plName + "jpg"));
IPlane.planeObj[i].ModelNumber = drow[0].ToString();
IPlane.planeObj[i].EngineType = drow[1].ToString();
IPlane.planeObj[i].FlySpeed = Convert.ToInt32(drow[2]);
IPlane.planeObj[i].SpecialFeature = drow[3].ToString();
IPlane.planeObj[i].Price = Convert.ToDouble(drow[4]);
IPlane.planeObj[i].EconSeats = Convert.ToInt32(drow[6]);
IPlane.planeObj[i].BussSeats = Convert.ToInt32(drow[7]);
IPlane.planeObj[i].FirstSeats = Convert.ToInt32(drow[8]);
//drow 5 is the image
}
}
感謝您的回答,有很多錯誤,因爲這只是從數據庫加載詳細信息的方法的測試代碼。我會盡快解決他們的問題。 – NimazSheik 2014-12-03 10:57:02
@NimazSheik沒有太多的錯誤,我太粗糙了。你只有一些對象沒有處置。只需將IDisposable中的所有內容放在一起使用即可:D – giammin 2014-12-03 11:01:58