ファイルへのストリーミング中に問題が発生しました。簡単な解決策があると確信していますが、見つけるのに苦労しています。私がやろうとしていることは非常に簡単です。クラスのコンテンツを取得し、それらをXMLにシリアル化して、ファイルにストリーミングしています。私が使用しているコードは次のとおりです。
ObservableCollection<RackItemViewModel> rackVMs = ProjectTree.GetTreeData();
XmlSerializer serializer = new XmlSerializer(typeof(RackItem));
using (TextWriter tw = new StreamWriter(filename, false))
{
foreach (RackItemViewModel VM in rackVMs)
serializer.Serialize(tw, VM.RackItem);
}
ProjectTree.GetTreeData()は、シリアル化するデータを返すだけです。プログラムを実行してデータを保存すると、すべてが期待どおりに機能し、データが保存され、Deserializeで読み戻すことができます。私が抱えている問題は、複数の保存を実行する場合です。1つのデータセットを1つのファイルに保存し、次に別のデータセットを別のファイルに保存すると、最初のファイルは正しいですが、2番目のファイルは最初のファイルと2番目のファイルを連結したものです。ストリームまたはXMLSerializerのいずれかが、保存の間にコンテンツを解放していないようです。Streamの代わりにwritefileを使用しようとしましたが、それでも同じ問題が発生します。Streamをフラッシュして閉じることも試みましたが、これは効果がありません。言うまでもなく、保存の合間にアプリケーションを閉じて再起動すると、すべて正常に動作します。誰かが私が間違っていることを教えてもらえますか?