【问题标题】:WPF : Can BinaryFormatter serialize FlowDocument instance?WPF:BinaryFormatter 可以序列化 FlowDocument 实例吗?
【发布时间】:2011-10-22 03:02:30
【问题描述】:

我喜欢使用 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 没有声明 'Serializable' 属性”。

ps。当然,我可以使用 XamlReader 和 XamlWriter 来序列化 FlowDocument。但我认为二进制可以更快地完成这项工作。

【问题讨论】:

    标签: c# wpf serialization


    【解决方案1】:

    我假设您正在询问您的相关问题 - 将您的 FlowDocument 从一个线程传送到另一个线程。我从未使用 BinaryFormatter 取得任何成功。除非您的 FlowDocument 非常大(例如,超过 100 MB),否则您可以轻松地将其保存到内存中,以便在线程之间作为内存流共享,如下所示:

    MemoryStream stream = new MemoryStream();
    XamlWriter.Save(myFlowDoc, stream);
    stream.Position = 0;
    

    您可以在线程之间共享 MemoryStream,并避免磁盘 IO。在您的另一个线程上,使用 MemoryStream 中的 XamlReader.Load。

    如果您确实想以二进制格式将其写入磁盘,我会说获取 Xaml,然后使用压缩库制作 ZIP 文件,就像 XPS 一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      • 2014-07-20
      • 2016-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多