WPF: Может ли BinaryFormatter сериализовать экземпляр FlowDocument? - PullRequest
3 голосов
/ 08 августа 2011

Мне нравится использовать бинарный формат для сериализации потока документов. но это делает исключение.

[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' proeprty".

пс. Конечно, я могу использовать XamlReader и XamlWriter для сериализации FlowDocument. но я думаю, что бинарный может повысить производительность для этой работы.

1 Ответ

4 голосов
/ 08 августа 2011

Я предполагаю, что вы спрашиваете о своем связанном вопросе - перемещать ваш FlowDocument из одного потока в другой.У меня никогда не было успеха с использованием BinaryFormatter.Если ваш FlowDocument не очень большой (скажем, более 100 МБ), вы можете легко сохранить его в памяти, чтобы разделить его между потоками в виде потока памяти, например:

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

Вы можете совместно использовать MemoryStream между потоками иизбегайте дискового ввода-вывода.В другом потоке используйте XamlReader.Load из MemoryStream.

Если вы хотите записать его на диск в двоичном формате, я бы сказал, что получите Xaml, а затем используйте библиотеки сжатия для создания ZIP-файла., как делает XPS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...