我喜欢使用binaryformatter来序列化流文档。但这是例外。
[Serializable]
public class BinFlow
{
public FlowDocument my { get; set; }
}
BinFlow myBF = new BinFlow();
myBF.my = myFlowDocument;
FileStream myFile = File.Create(@"d:\test.bin");
BinaryFormatter myBinaryFormat = new BinaryFormatter();
//exception occured here!!
myBinaryFormat.Serialize(myFile, myBF);
异常消息显示“FlowDocument 未声明‘可序列化’属性”。
附注当然,我可以使用 XamlReader 和 XamlWriter 来序列化 FlowDocument。但我认为二进制可以更快地完成这项工作。
我假设您正在询问相关问题 - 将您的 FlowDocument 从一个线程传输到另一个线程。我从未使用 BinaryFormatter 取得过任何成功。除非您的 FlowDocument 非常大(例如超过 100 MB),否则您可以轻松地将其保存到内存中,以作为内存流在线程之间共享,如下所示:
MemoryStream stream = new MemoryStream();
XamlWriter.Save(myFlowDoc, stream);
stream.Position = 0;
您可以在线程之间共享MemoryStream,并避免磁盘IO。在另一个线程上,使用 MemoryStream 中的 XamlReader.Load。
如果您确实想以二进制格式将其写入磁盘,我会说获取 Xaml,然后使用压缩库制作 ZIP 文件,就像 XPS 所做的那样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)