如何等待新文件发布

时间:2013-12-05 07:11:25

标签: c#-4.0 filelock

我正在创建一个新的* .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(),我可以成功发送电子邮件,但我不想使用它。我不知道文件操作完成的确切时间。这是一个控制台应用程序。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

为什么需要将文件写入磁盘并在创建attachent时再次读取它?我猜你可以使用方法在从现成的字符串创建附件时。

// 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