C#/ .NET 3.5,WindowsForms。IO異常 - 由另一個進程使用的文件
我有一個從文件顯示的圖像此Windows窗體,每當用戶保存執行該代碼的記錄:在每個Catch語句
string oldLoc = itemsBO.ImageLoc;
if (oldLoc != SystemSettings.NoImageLocation)
{
if (File.Exists(oldLoc))
{
try { File.Delete(oldLoc); }
catch (IOException ex)
{
MessageBox.Show("1 - " + ex.GetType().ToString() + " " + ex.Message);
}
}
}
string saveLoc = itemsBO.ImageSearchLoc + ".jpg";
if (File.Exists(saveLoc))
{
try { File.Delete(saveLoc); }
catch (IOException ex)
{
MessageBox.Show("2 - " + ex.GetType().ToString() + " " + ex.Message);
}
}
try
{
if (pictureBox2.Image != null)
pictureBox2.Image.Save(saveLoc, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (IOException ex)
{
MessageBox.Show("3 - " + ex.GetType().ToString() + " " + ex.Message);
}
漠視窮人MessageBox的消息,但它的錯誤了。它不能刪除「現有」圖像,因爲它表示它正在被另一個進程使用。無法保存,因爲文件存在於相同的路徑中,因爲它不會被刪除。
這是當他們嘗試添加新圖片時設置圖像的代碼;
Image clipImage = Clipboard.GetImage();
if (tabControl2.SelectedTab == tabPage5)
{
pictureBox1.Image = clipImage;
itemsBO.IsDirtyImage = true;
}
else if (tabControl2.SelectedTab == tabPage6)
{
pictureBox2.Image = clipImage;
itemsBO.IsDirtyImage2 = true;
}
然後,當形式負載高達與圖像現有的記錄,這是用於獲取代碼/顯示它:
byte[] bits = File.ReadAllBytes(imgfil);
msImage = new MemoryStream(bits, 0, bits.Length);
if (tabControl2.SelectedTab == tabPage5)
pictureBox1.Image = Image.FromStream(msImage);
else if (tabControl2.SelectedTab == tabPage6)
pictureBox2.Image = Image.FromStream(msImage);
imgfil是一個路徑圖像,當然。
完全不知道從哪裏開始...
您是否在您的代碼某處讀取此位置處的文件itemsBO.ImageLoc? – Gaurav
ImageLoc是該文件的路徑,是的 – user1096207
我的意思是您正在加載文件在這個位置itemsBO.ImageLoc到你的應用程序?如果是的話,你是如何加載的 – Gaurav