я использую этот код для сериализации объектов требуется (используйте DataContractSerialier)Serialize Ошибка во время сохранения файла с помощью DataContractSerialize
try { using (var stream = File.OpenWrite(filePath)) { var dcs = new DataContractSerializer(typeof(T)); dcs.WriteObject(stream, obj); } } catch (Exception ex) { throw new Exception("Error during write object to xml file", ex); }
я не понимаю, но иногда этот метод добавления к концу XML-файла некоторые дополнительные символы. например: «eInfo>» (когда я удаляю «eInfo>» десериализация работает хорошо). Я нашел это, когда выполняю тестирование с высокой нагрузкой (вызовите этот метод 12000 раз без остановки). возможно, я могу проверить, что файл был сохранен правильно (попробуйте десериализовать сохраненный файл), но я думаю, что это плохая идея, потому что нам нужно запускать десериализацию procees в любое время при сохранении xml-файла.
Когда вы вызываете метод 12000 раз без остановки, все ли они записываются в один и тот же файл? EDIT: файл в вашей локальной сети или в сети? –
нет, в любое время я сохраняю файл с новым именем файла на локальном жестком диске. –
Просто чтобы добавить, если это тот же файл, 'File.OpenWrite' будет _overwrite characters_ в файле, сначала не очистить файл. Это означает, что если ваша последняя запись (сериализация) была _shorter_, чем предыдущая запись, она оставит слева символы. Прочтите замечания на странице MSDN: http://msdn.microsoft.com/en-us/library/system.io.file.openwrite%28v=vs.110%29.aspx –