无法访问该文件,因为该文件正由另一个进程

时间:2017-06-28 06:46:28

标签: c# file

我知道这个问题现在被问了好几次,但是我检查了所有的答案,似乎没有解决我的问题。

我正在尝试将照片作为附件发送到电子邮件中。所以,首先,当这个人选择照片时,我将它们复制到一个特定的文件夹中,然后当我发送邮件时,我将它们从这个文件夹中取回。最后,我想删除该文件夹,但它会抛出您在标题中看到的异常。我已经检查过,我没有看到任何我没有关闭的流(因为我没有为此使用流),我迷路了。

我用来复制文件的方法:

private void Send_Click(object sender, RoutedEventArgs e)
    {
        OpenFileDialog ofd = new OpenFileDialog();
        DialogResult dialogresult = ofd.ShowDialog();

        ///Si l'utilisateur a bien rentré un fichier
        if (dialogresult == DialogResult.OK || dialogresult == DialogResult.Yes)
        {
            string folder = Data.HelperDirectory.getFolderDocumentAndCreate("Devis");
            Dialogs.PleazeWait pw = new Dialogs.PleazeWait();
            pw.Show();

            ///Récupère le nom du fichier que l'utilisateur a envoyé précédemment
            string file = folder + System.IO.Path.GetFileName(ofd.FileName);

            ///Ajoute "(1)" au nom du fichier pour éviter les doublons
            while (File.Exists(file))
            {
                file = file + " (1)";
            }

            ///Copie le fichier dans le répertoire de sauvegardes
            File.Copy(ofd.FileName, file);
            pw.Close();
        }
    }

用于获取文件并将其附加到邮件的代码部分:

string folder = Data.HelperDirectory.getFolderDocumentAndCreate("Devis");
            string[] files = Directory.GetFiles(folder);
            foreach(string file in files)
            {
                if(!string.IsNullOrEmpty(file))
                {
                    mail.Attachments.Add(new Attachment(file));
                }
            }

最后,当我尝试删除文件夹时(当然发送邮件后):

Directory.Delete(folder, true);

如果它可以帮助解决问题,我可以说这段代码设法发送邮件(因此它传递代码的第二部分)但在尝试删除文件夹时抛出异常。并且在代码的这些部分之间不会调用文件或文件夹。

提前感谢您的时间和帮助!

1 个答案:

答案 0 :(得分:2)

取决于您的邮件类型,但在发送邮件后,您可以尝试处理该邮件。

client.Send(mail);
mail.Dispose();