我正在使用WinForms
。我使用picturebox
製作了一個簡單的圖像查看器應用程序來顯示我的圖像。我創建了一個創建臨時文件的方法。這些文件總是圖片文件。當我的應用程序完成使用圖像我想要能夠刪除這些臨時的FormClosing
文件位於:C:\Users\taji01\AppData\Local\Temp\8bd93a0dec76473bb82a12488fd350af
要做到這一點,我不能簡單地調用File.Delete(C://picture.jpg),因爲我的應用程序仍在使用它們即使在我的應用程序中顯示了另一張照片。所以我試圖擺脫它,但我無法想象如何做到這一點。我應該使用使用聲明嗎?有沒有更好的方式來處理和刪除文件或有辦法使這項工作?處理臨時文件並刪除它們
_fileName = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("N"));
File.Copy(imagePath, _fileName);
_stream = new FileStream(_fileName, FileMode.Open, FileAccess.Read, FileOptions.DeleteOnClose);
this._Source = Image.FromStream(_stream);
Error: "The process cannot access the file C:\picture.jpg because it is being used by another process" Exeption thrown: 'System.IO.IO.Exception' in msconrlib.dll (The process cannot access the file 'C:\picture.jpg' because it is being used by another procesas")
'Path.GetTempFileName()' – SLaks
https://msdn.microsoft.com/en-us/library/system.io.filestream(v=vs.110).aspx#Examples – Jim
從[文件爲Image.FromFile()'](https://msdn.microsoft.com/en-us/library/stf701f5(v = vs.110).aspx):*該文件保持鎖定狀態,直到圖像被丟棄。 *所以你必須首先處理圖像。或者在內存中複製並處理原件。請參閱http://stackoverflow.com/questions/6576341/open-image-from-file-then-release-lock – dbc