我正在使用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