C# - 无法访问已关闭的流
C# - Cannot access a closed stream
我使用 iTextSharp 5.5.13.2 版创建 PDF 的代码返回错误“无法访问已关闭的流”。
我不确定这个错误是如何出现的,因为我将我的代码封装在 Using 语句的范围内。调试会导致应用程序中断状态。
PdfWriter writer = PdfWriter.GetInstance(doc, ms);
查看(已弃用)iTextSharp 5.5.13.2 的源代码here, I can find the source for the DocWriter
(base class of PdfWriter
) and it's Close
method here
public virtual void Close() {
open = false;
os.Flush();
if (closeStream)
os.Close();
}
os
在这种情况下是作为第二个参数传递给 PdfWriter.GetInstance
(在你的情况下是 ms
)。使用 Ctrl + F 我可以找到 closeStream
的来源,它恰好是 属性 公开为 CloseStream
here
public virtual bool CloseStream {
get {
return closeStream;
}
set {
closeStream = value;
}
}
一起 Close
由 DocWriter
的 Dispose
method 自动调用
public virtual void Dispose() {
Close();
}
因此,如果您不希望 PdfWriter
关闭您的 ms
,您需要在 PdfWriter
关闭之前设置 writer.CloseStream = false;
我使用 iTextSharp 5.5.13.2 版创建 PDF 的代码返回错误“无法访问已关闭的流”。 我不确定这个错误是如何出现的,因为我将我的代码封装在 Using 语句的范围内。调试会导致应用程序中断状态。 PdfWriter writer = PdfWriter.GetInstance(doc, ms);
查看(已弃用)iTextSharp 5.5.13.2 的源代码here, I can find the source for the DocWriter
(base class of PdfWriter
) and it's Close
method here
public virtual void Close() {
open = false;
os.Flush();
if (closeStream)
os.Close();
}
os
在这种情况下是作为第二个参数传递给 PdfWriter.GetInstance
(在你的情况下是 ms
)。使用 Ctrl + F 我可以找到 closeStream
的来源,它恰好是 属性 公开为 CloseStream
here
public virtual bool CloseStream {
get {
return closeStream;
}
set {
closeStream = value;
}
}
一起 Close
由 DocWriter
Dispose
method 自动调用
public virtual void Dispose() {
Close();
}
因此,如果您不希望 PdfWriter
关闭您的 ms
,您需要在 PdfWriter
关闭之前设置 writer.CloseStream = false;