2017-06-28 5 views
1

この質問は数回尋ねられましたが、すべての回答を確認しても問題が解決しないようです。ファイルが別のプロセスで使用されているためにファイルにアクセスできません

添付ファイルとして写真をメールで送信しようとしています。だから、最初に、人が写真を選んだとき、私はそれらを特定のフォルダにコピーしてから、メールを送信するときにこのフォルダから戻します。最後に、私はフォルダを削除したいが、それはあなたがタイトルで見ることができる例外をスローする。私はすでにチェックしました。私はクローズしなかったストリームは見ません(ストリームを使用していないので、私は失われています)。 (最後に

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)); 
       } 
      } 

、私は、フォルダを削除しよう:

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(); 
     } 
    } 

コード部分は、ファイルを取得し、メールに添付するために使用:

方法は、私は、ファイルをコピーするために使用しますもちろんメールを送った後に):

私が問題を解決するのに役立ちます、私はこのコードを言うことができますメールを送信して(コードの2番目の部分を渡します)、フォルダを削除しようとすると例外がスローされます。また、コードの部分の間でファイルやフォルダについては何も呼び出されません。

お時間をいただきありがとうございます。

答えて

2

メールの種類によって異なりますが、メールを送信した後でそのオブジェクトを処分できます。

client.Send(mail); 
mail.Dispose(); 
関連する問題