酷!學園

技術討論區 => 程式討論版 => .NET程式設計討論區 => 主題作者是: nomoty 於 2010-09-06 21:46

主題: 無法連續讀取同一個檔案
作者: nomoty2010-09-06 21:46
目前透過itextsharp將內容轉成pdf再附檔mail出去,但只有第一次寫入pdf檔可以成功,第二次要寫入就會出現

「由於另外一個處理程序正在使用檔案 .....,所以無法存取該檔案」的錯誤訊息如圖,

(http://img409.imageshack.us/img409/6490/errorba.th.jpg) (http://img409.imageshack.us/i/errorba.jpg/)

網頁就無法再繼續動作,一定要將IIS重啟才可以,但始終都只有第一次成功,

無法連續讀取檔案,在程式最後有將程序給關閉,但還是一樣,希望大家可以幫忙看一下,以下是程式碼

Dim doc As Document = New Document
Dim fs As FileStream = File.Create("C:\Inetpub\wwwroot\test\test.pdf")
PdfWriter.GetInstance(doc, fs)
doc.Open()
     .
     .
     .
     .
 doc.Close()
 fs.Dispose()
 fs.Close()

mail.Attachments.Add(New System.Net.Mail.Attachment("C:\Inetpub\wwwroot\test\test.pdf"))
    .
    .
 mail.Attachments.Clear()
 mail.To.Clear()
主題: 回覆: 無法連續讀取同一個檔案
作者: 洋蔥叔叔2010-09-08 14:08
PdfWriter 有關嗎?
主題: 回覆: 無法連續讀取同一個檔案
作者: nomoty2010-09-12 20:42
      將原有使用filestream改成memorystream,程式正常

      Dim doc As Document = New Document
      Dim ms As New MemoryStream()
      Dim writer As PdfWriter = PdfWriter.GetInstance(doc, ms)
      doc.Open()
      Dim table As Table = New Table(4)
      .......

       doc.Add(table)
       writer.CloseStream = False
          doc.Close()
       ms.Position = 0

       mail.Attachments.Add(New System.Net.Mail.Attachment(ms, Num + ".pdf",   "application/pdf"))