gpt4 book ai didi

c# - 无法删除文件,因为它正被另一个进程使用

转载 作者:行者123 更新时间:2023-11-30 17:10:47 24 4
gpt4 key购买 nike

当我尝试在“foreach”循环中删除文件时,最后收到错误消息。

我知道我需要在某处使用关键字“using”,但我不确定在哪里以及如何使用。

private void btnEmailIntegrationFiles_Click(object sender, EventArgs e)
{
DialogResult EmailWarningMsg = MessageBox.Show("You're about to email the Integration IAT text files. Are you sure?", "WARNING!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);

if (EmailWarningMsg == DialogResult.Yes)
{
if (Directory.GetFiles(AppVars.NetworkIntegrationFileLocation).Length == 0)
{
MessageBox.Show("The folder is empty. Please create the files before sending it.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
if (Directory.GetFiles(AppVars.NetworkIntegrationFileLocation).Length != 4)
{
MessageBox.Show("The folder does not contain exactly 4 files.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
Email email = new Email();

email.SendEmailToFinalDestinationWithAttachments(AppVars.DBTeamEmail, AppVars.ChrisWhitmoreEmail, AppVars.DBTeamEmail, "Integration Files", "Please see integration files attached.");
}
}

PopulateListViewWithPoliciesAvailableToHoldBack();

string[] files = Directory.GetFiles(AppVars.NetworkIntegrationFileLocation);

foreach (string file in files)
{
File.Delete(file);
}
}
}

我该如何使用关键字 using 来表示“通过电子邮件发送”,这样我在尝试删除那些作为附件通过电子邮件发送的文件时就不会遇到此错误消息?

这是发送电子邮件类:

public void SendEmailToFinalDestinationWithAttachments(string EmailFrom, string EmailTo, string EmailCC, string EmailSubject, string EmailBody)
{
try
{
MailMessage EmailMessage = new MailMessage();
SmtpClient smtp = new SmtpClient(AppVars.SMTPClient, AppVars.SMTPClientPort);
smtp.UseDefaultCredentials = false;
EmailMessage.IsBodyHtml = true;
EmailMessage.To.Add(EmailTo);
EmailMessage.CC.Add(EmailCC);
EmailMessage.CC.Add(user);
EmailMessage.Subject = EmailSubject;
EmailMessage.From = new MailAddress(EmailFrom);
EmailMessage.Body = EmailBody;

string[] files = Directory.GetFiles(AppVars.NetworkIntegrationFileLocation, "*" + DateTime.Now.ToString("yyyyMMdd") + "*");

foreach (string file in files)
{
EmailMessage.Attachments.Add(new Attachment(file));
}

smtp.Send(EmailMessage);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}

最佳答案

您需要将您的 EMail 类修改为:

using (MailMessage EmailMessage = new MailMessage()) {
...
smtp.Send(EmailMessage);
}

关于c# - 无法删除文件,因为它正被另一个进程使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11852938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com