首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MemoryStream无法访问关闭的流。

MemoryStream无法访问关闭的流。
EN

Stack Overflow用户
提问于 2011-11-11 22:11:06
回答 1查看 18.7K关注 0票数 13

使用sharpPDF库,我生成一个pdf内存流,我想通过电子邮件直接发送它。但是线ms.Seek(.)给出一个ObjectDisposedException;

无法访问封闭流。

pdf.CreatePDF方法接受(输出) fileName字符串或(Out)fileName。但我想它也关闭了小溪?我不太习惯和流一起工作,所以如果你能告诉我应该怎么做的话?

在这里可以找到CreatePDF方法的CreatePDF源代码:

http://www.java2s.com/Open-Source/CSharp/PDF/SharpPDF/sharpPDF/pdfDocument.cs.htm

代码语言:javascript
复制
Public Sub SendPDF()
   Dim pdf As New sharpPDF.pdfDocument("Title", "Author")

   '....Generate pdf content

   Dim ms As New IO.MemoryStream
   pdf.CreatePDF(ms)

   Dim email As New EmailService
   email.Send(ms)

End Sub

Public Class EmailService
   Public Sub Send(Byval ms as Stream)
        ms.Seek(0, IO.SeekOrigin.Begin)

        Dim atc As New Attachment(ms, "Report.pdf")
        mail.Attachments.Add(atc)

        '....set other email parameters

        client.SendAsync(mail, mail.Subject)
  End Sub 
End Class
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-11 22:18:03

一种简单的方法是将字节数组从关闭的MemoryStream中取出并创建另一个:

代码语言:javascript
复制
pdf.CreatePDF(ms)
ms = new MemoryStream(ms.ToArray())

Dim email As New EmailService
email.Send(ms)

请注意,在关闭/释放的MemoryStream实例上调用MemoryStream是可以的。甚至有记载:

Note

此方法在关闭MemoryStream .时工作。

票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8100590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档