0

我正在创建一个新的 *.csv 文件,创建后我想将此文件作为电子邮件的附件发送,但文件被锁定 10 - 15 秒。有什么方法可以等待文件被释放然后发送这个文件而不会出现任何异常:该进程无法访问该文件,因为它正在被另一个进程使用。

File.WriteAllText("test.csv", sb.ToString(),Encoding.UTF8);
SendMail();

 private static void SendMail()
    {
     MailMessage mail = new MailMessage("from", "to");
        SmtpClient client = new SmtpClient();
        client.Port = 25;
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.UseDefaultCredentials = false;
        client.Host = "host";
        mail.Subject = "this is subject";
        mail.Body = "this is body";
        mail.Attachments.Add(new Attachment("test.csv"));
        mail.IsBodyHtml = true;
        client.Send(mail);
}

如果我等待 Thread.Sleep() 我可以成功发送电子邮件,但我不想使用它。我不知道文件操作完成的确切时间。它是一个控制台应用程序。有什么建议么?

4

1 回答 1

0

为什么创建附件时需要将文件写入磁盘并再次读取?我想您可以在从就绪字符串创建附件时使用方法。

// Attach the message string to this e-mail message.
Attachment data = new Attachment(textMessage, MediaTypeNames.Text.Plain);
data.Name = "test.csv";

在这里找到:http: //msdn.microsoft.com/ru-ru/library/9089e309 (v=vs.110).aspx 或者试试这个方法:http: //msdn.microsoft.com/ru-ru/library/ ms144617(v=vs.110).aspx

于 2013-12-05T07:39:13.437 回答