2012-01-04 10 views
0

私はそれが本当にばかげていると知っていますが、一部のユーザーのデータをデータベースに保存して、すべてのデータを.txtファイルに書きたいという非常に簡単なアプリケーションがあります。次のようにStreamwriterの問題

コードは次のとおりです。

List<MIEMBRO> listaMiembros = bd.MIEMBRO.ToList<MIEMBRO>(); 


    fic.WriteLine("PARTICIPACIONES GRATUITAS MIEMBROS: "); 
    mi = new Miembro(); 
    foreach (MIEMBRO_GRATIS m in listaMiembroGratis) 
    { 
     mi.setNomMiembro(m.nomMiembro); 
     mi.setNumRifa(m.numRifa.ToString()); 
     fic.WriteLine(mi.ToString()); 
    } 
    fic.WriteLine(); 

あなたは、本当に簡単コードを見ての通り。事は:私は、データグリッドに関する情報を表示し、さらに多くのメンバーがあることを知っていますが、いくつかの点で書き込みを停止します。

ストリームライターに書き込む線や文字はいくつありますか?なぜ私はすべてのメンバーを書くことができない、それらの一部だけ???

+1

どのように脂肪が発達していますか? –

+1

これをtry/catchでラップして例外がスローされているかどうか確認しましたか? –

+0

StreamWriterはどのように宣言されていますか?あなたはそれをきれいに閉めていますか? – R0MANARMY

答えて

2

ficは、出力ファイルを見ている間におそらくフラッシュされません。ブロックusingの引数としてインスタンス化すると、フラッシュされ、閉じられ、完了したときに破棄されます。

また、ケースには、あなたが適切にフラッシュしている(しかし、それはあなたがファイルをチェックしている時間によってフラッシュされていない)、あなたは各反復の終了時にフラッシュすることができます:

foreach (MIEMBRO_GRATIS m in listaMiembroGratis) 
{ 
    mi.setNomMiembro(m.nomMiembro); 
    mi.setNumRifa(m.numRifa.ToString()); 
    fic.WriteLine(mi.ToString()); 
    fic.Flush(); 
} 

これはパフォーマンスが低下しますわずかですが、少なくとも、どのレコードが書き込みに失敗しているかを確認する機会があります(実際に例外がスローされた場合)。

2

ストリームライターに書き込む行数または文字数はありますか?

いいえ、ありません。

ご覧のとおり、本当に簡単なコードです。 「私は データグリッドに関する情報を表示し、私はより多くのメンバーがたくさんある知っているが、それは

私の推測では、あなたのコードが例外をスローしていることをいくつかの点で 書き込みを停止し、あなたが上がらない:事がありますそれをキャッチします。私はsetNomMiembro, setNumRifaToStringの実装をMiembroに見ていきます。ところで、setNomMiembrosetNumRifaの場合は、おそらくメソッドとしてではなくプロパティ({get;set;})として実装する必要があります。

たとえば、numRifaがnullの場合、numRifaToStringを呼び出すとNULLポインタ例外がスローされます。

+0

私も試してキャッチしたが、私はそれをコピーしていない...例外はスローされません! – Sonhja

関連する問題