0

ファイルへのストリーミング中に問題が発生しました。簡単な解決策があると確信していますが、見つけるのに苦労しています。私がやろうとしていることは非常に簡単です。クラスのコンテンツを取得し、それらを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をフラッシュして閉じることも試みましたが、これは効果がありません。言うまでもなく、保存の合間にアプリケーションを閉じて再起動すると、すべて正常に動作します。誰かが私が間違っていることを教えてもらえますか?

4

2 に答える 2

0

新しいファイルに書き込む前に、ストリームをフラッシュしてみてくださいtw.Flush()

于 2012-08-15T09:39:26.520 に答える
0

問題を解決できたので、このスレッドを整理したいと思いました。データのシリアル化やストリーミングとは何の関係もありませんでした。書き込まれているデータバッファは、書き込みの間にデータを完全に解放していませんでした。私はビューモデルオブジェクトをチェックしていましたが、それは問題ありませんでしたが、書き込まれているオブジェクト(RackItem)がスイートをフォローしていませんでした。私の側の愚かなエラー。提案をありがとう。

于 2012-08-17T16:01:45.510 に答える