我正在使用WinForms
。我使用picturebox
制作了一个简单的图像查看器应用程序来显示我的图像。我找到了创建临时文件的方法。这些文件始终是图片文件。当我的应用程序使用图像完成时,我希望能够删除位于FormClosing
的{{1}}文件上的临时文件。要做到这一点,我不能简单地调用File.Delete(C://picture.jpg )因为即使在我的应用程序中显示另一张图片,我的应用程序仍在使用它们。所以我试图处理它,但我无法知道如何做到这一点。我应该使用using语句吗?是否有更好的方法来处理和删除文件,或者有办法使这个工作吗?
C:\Users\taji01\AppData\Local\Temp\8bd93a0dec76473bb82a12488fd350af
错误:"进程无法访问文件C:\ picture.jpg,因为它正由另一个进程使用"抛出的执行:' System.IO.IO.Exception'在msconrlib.dll中(进程无法访问文件' C:\ picture.jpg'因为它正在被另一个进程使用")
答案 0 :(得分:0)
您需要Close()
FileStream
。
答案 1 :(得分:0)
我认为交易经理会做你想做的事。查看.NET Transactional File Manager。当您回滚事务时,它应该自动删除临时文件,只要它们是在事务范围内创建的。
答案 2 :(得分:0)
在这里,你需要处理MailMessage的对象。
For Ex.
// Sends email using SMTP with default network credentials
public static void SendEmailToCustomer(string To, string From, string BCC, string Subject, string Body, bool IsBodyHtml, string attachedPath = "") {
//create mail message
MailMessage message = !string.IsNullOrEmpty(From) ? new MailMessage(From, To) : new MailMessage(From, To);
//create mail client and send email
SmtpClient emailClient = new SmtpClient();
//here write your smtp details below before sending the mail.
emailClient.Send(message);
//Here you can dispose it after sending the mail
message.Dispose();
//Delete specific file after sending mail to customer
if (!string.IsNullOrEmpty(attachedPath))
DeleteAttachedFile(attachedPath);
}
//Method to delete attached file from specific path.
private static void DeleteAttachedFile(string attachedPath) {
File.SetAttributes(attachedPath, FileAttributes.Normal);
File.Delete(attachedPath);
}