0

20,000 回実行される foreach ステートメントがあり、反復ごとにファイルに行を書き込む必要があります。問題は、ファイルへの書き込み中にファイルを開く方法はありますかということです。ストリームを閉じない限り、テキストファイル内のテキストは表示されません。しかし、ストリームを閉じずにテキストを見たいです。誰か助けてください.....

事前に感謝

var fileName = Path.GetTempPath();
streamWriter sw=new streamWriter(fileName + "\\sampleFile.txt",true);
for (int i = 0; i <= 20000; i++)
{                    
   sw.WriteLine("vinod" + i);                   
}
4

3 に答える 3

1

ファイルの内容を一度に計算でき、継続的に情報をログに記録する必要がない場合は、内容の準備が整ったときにテキストをファイルに書き込みます。

例えば:

var fileName = Path.GetTempPath();
List<string> lines = new List<string>();
for (int i = 0; i <= 20000; i++)
{                    
   lines.Add("vinod" + i);                   
}

File.WriteAllLines(fileName, lines);

それ以外の場合は、ストリームまたは使用にフラッシュを使用しますFile.AppendAllText( MSDNを参照)。

于 2013-11-08T13:00:36.063 に答える
1

ファイルをビューアのソースとして使用しません。loggerviewerを実行しようとしている場合は、設計の変更を検討してください。

  1. ある種のソースを作成し (ただし、ファイルとは異なり、ファイルにすることもできますが、頻繁に更新するため、与えられた条件に基づいて最適ではありません)、ロガーとビューアーの両方からアクセスできるようにします。たとえば、string両方がアクセスできる を使用します。

  2. イベントを作成し、ビューアを作成して、独自のソースを表示するようにします。

ビューアーがListBox(たとえば) の場合、2 番目のシナリオでは 20000 アイテムで十分です。ListBoxファイルに行を追加し、同時にイベントを送信して、その内容を更新します。する必要はありませんFlush()

それが大きくなったり、ビューアに高度な機能を提供する必要がある場合: フィルタリング、リロードなど - 最初のシナリオの方が優れています (仮想モードは に最適ですListBox)。

于 2013-11-08T14:16:49.650 に答える