Почему DataContractSerializer вызывают исключение. Могу ли я исправить испорченный XML-файл вручную? - PullRequest
1 голос
/ 27 января 2011

Уважаемые все:

У меня есть несколько вопросов при использовании DataContractSerializer.

1. Повышает ли производительность несколько потоков для одновременной записи разных файлов?

Я проверил и пришел к выводу, что производительность снижается ...... Но иногда в качестве вопроса 2 принимается исключение.

2. Я создаю два потока, чтобы сериализовать разные объекты в разные файлы.Иногда я получаю исключение, как показано ниже:

"Необработанное исключение типа 'System.InvalidOperationException'

Дополнительная информация: маркер StartElement в состоянии EndRootElement приведет к неверному XML-документу.

Убедитесь, что параметр ConformanceLevelустановлен на ConformanceLevel.

Fragment или ConformanceLevel.Auto, если вы хотите записать фрагмент XML. "

Я гуглил для обработки этого исключения, но не могу понять, что является основной причиной ....

И если исключение произошло.Я встретил проблему как вопрос 3.

3. Если XML не является допустимым файлом (имеет только частичное содержимое, но внезапно заканчивается в файле), процесс DeSerialize может вызвать исключение ... v Это означает, что всеинформация потеряна из-за неверного XML.Есть ли способ восстановить этот файл XML.Я боюсь потерять всю информацию в результате произошедшего исключения.

Спасибо.


Уважаемые все: Спасибо за ответ.

Для 3, иногда исключениесделать файл пустымУ меня нет возможности исправить файл.

Очень опасно, если для меня произошло исключение.

Для 2. Я вставляю фрагмент кода как ссылку http://nopaste.csie.org/c4711#form

Я использую другой файл для сериализации и сериализации другой памяти.

Я обнаружил, что если произошло исключение, файл будет пустым, даже исключение не произошло, файлы также не завершены.Десериализация вызовет исключение ....

Я понятия не имею, почему это происходит не всегда, но очень часто.

Спасибо.

1 Ответ

1 голос
/ 27 января 2011

1 - обычно нет; в большинстве случаев вы будете заблокированы на IO, поэтому если у вас недостаточно пропускной способности IO для удовлетворения всех потоков, это не поможет; У WP7 здесь будет немного другой профиль, но IO по-прежнему всегда премиум

2/3 - нам нужно увидеть код, чтобы понять, что происходит

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