作者 主題: 無法連續讀取同一個檔案  (閱讀 8402 次)

0 會員 與 1 訪客 正在閱讀本文。

nomoty

  • 懷疑的國中生
  • **
  • 文章數: 58
    • 檢視個人資料
無法連續讀取同一個檔案
« 於: 2010-09-06 21:46 »
目前透過itextsharp將內容轉成pdf再附檔mail出去,但只有第一次寫入pdf檔可以成功,第二次要寫入就會出現

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



網頁就無法再繼續動作,一定要將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-06 21:51 由 nomoty »

洋蔥叔叔

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
回覆: 無法連續讀取同一個檔案
« 回覆 #1 於: 2010-09-08 14:08 »
PdfWriter 有關嗎?

nomoty

  • 懷疑的國中生
  • **
  • 文章數: 58
    • 檢視個人資料
回覆: 無法連續讀取同一個檔案
« 回覆 #2 於: 2010-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"))