回答編集履歴

1

解決

2023/06/12 13:39

投稿

AMK
AMK

スコア765

test CHANGED
@@ -1,2 +1,32 @@
1
1
  とりあえずCSVは書き込めたので、いったん閉じます。
2
2
  協力してくれた方々、ありがとうございました。
3
+
4
+ チャットGPTに質問したらCSV書き込まない問題が解決したのでデータを共有します。
5
+ (ラベルのテキストは更新されないのは、そのまま)
6
+ <以下チャットGPT>
7
+ C#のStreamWriter.WriteLineメソッドは、データを書き込む際にバッファリングを行います。そのため、データがバッファに蓄積され、一定のサイズに達したときや書き込みが明示的にフラッシュされたときにまとめて書き込まれることがあります。その結果、1件ずつの書き込みではなく、まとめて書き込まれることがあります。
8
+
9
+ これを解決するには、以下の方法を試してみることができます:
10
+
11
+ StreamWriter.AutoFlushプロパティを有効にする: StreamWriterのAutoFlushプロパティをtrueに設定することで、WriteLineメソッドが呼び出されるたびに自動的にフラッシュされるようになります。これにより、データがバッファにたまることなく即座に書き込まれます。
12
+ ```C#
13
+ using (StreamWriter writer = new StreamWriter(filePath, true) { AutoFlush = true })
14
+ {
15
+ // WriteLineの呼び出しで即座に書き込みが行われる
16
+ writer.WriteLine(line);
17
+ }
18
+ ```
19
+ <プラン2>
20
+ StreamWriter.Flushメソッドを明示的に呼び出す: StreamWriterのFlushメソッドを呼び出すことで、現在のバッファ内のデータを即座に書き込むことができます。
21
+ ```C#
22
+ using (StreamWriter writer = new StreamWriter(filePath, true))
23
+ {
24
+ // WriteLineの呼び出し後にFlushを呼び出してバッファを明示的にフラッシュする
25
+ writer.WriteLine(line);
26
+ writer.Flush();
27
+ }
28
+
29
+ ```
30
+ 上記のいずれかの方法を使用すると、WriteLineメソッドが呼び出された時点でデータが即座に書き込まれるようになります。これにより、1件ずつの書き込みが実現されます。
31
+
32
+ なお、ファイルのオープンやクローズなどのエラーハンドリングも適切に行ってください。