2014-05-05 45 views
0

我有函數來創建PDF,然後通過郵件發送附件。文件正在被其他進程使用,同時刪除文件

功能創建PDF:

public string CreatePdf() 
     { 

      try 
      { 
       using (document = new Document()) 
       { 

        if (File.Exists(filePath)) 
        { 
         workStream.Dispose(); 
         File.Delete(filePath); 
        } 
       // LOGIC to Create PDF 
        return filePath; 
       } 
      } 
      catch (Exception) 
      { 
       throw; 
      } 
      finally 
      { 
       document.Close(); 
       document.Dispose(); 
       workStream.Close(); 
      } 
     } 

要添加到附件:

myMail.attachment = new Attachment(new CreatePdf()); 

當我爲它創建創建罰款第一次文件,但是當我嘗試再次創建PDF我得到以下錯誤File.Delete(filePath)

The process cannot access the file because it is being used by another process. 

我看到了其他類似的問題,但無法弄清楚什麼需要完全關閉,因爲我已經關閉了所有東西。

+3

附件也應該配置。否則,他們會保持鎖定附件 – Steve

+1

不要像這樣檢查File.Exists()。只需調用File.Delete()並處理異常。而且,那個catch塊沒有意義。您可以將其刪除,然後自行離開。 –

+0

Joel感謝我提出的改變。 – Nikitesh

回答

1

我沒有看到您提供的代碼有任何問題。我個人認爲你並沒有關閉或處理類似附件的東西。你爲什麼不嘗試用using語句來實現你的附件?

+0

我dnt有一個文件流在附件我絕對通過文件路徑.. – Nikitesh

0

感謝SteveLynx解決了它不知道它是否是正確的方法。 Attachments class是IDisposable所以我認爲它會自行處理流。我剛剛添加了attachments.dispose()

相關問題