gpt4 book ai didi

c# - WPF : Can BinaryFormatter serialize FlowDocument instance?

转载 作者:行者123 更新时间:2023-11-30 15:43:09 31 4
gpt4 key购买 nike

我喜欢使用 binaryformatter 来序列化流文档。但它异常(exception)。

[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 没有 decared 'Serializable' proeprty”。

附言。当然,我可以使用 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 一样。

关于c# - WPF : Can BinaryFormatter serialize FlowDocument instance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6978067/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com