マルチスレッドを使用してデータを取得し、それを配列に保存するプログラムを作成しました。その後、コンソール プログラムを閉じるとイベントがトリガーされ、このイベントで配列内のデータをファイルに書き込みました。 。
しかし、このプログラムを 10 分未満実行した場合、ファイルの書き込みは正常に行われますが、20 分以上プログラムを閉じると、いくつかのファイルが出力されるだけで、プログラム自体が終了します。
以下はこれらの場所に関係するコードです:
これはメイン関数の SetConsoleCtrlHandler への呼び出しです
これが具体的な関数の実装です
リーリーこの問題を経験した人はいますか?
これはバッファか何かに関連していますか?なぜなら、直感的には、時間の経過とともにより多くのデータが受信される可能性があるからです。
CTRL_CLOSE_EVENT にはタイムアウト機構があるため、データの書き込みにどれだけ時間がかかっても、プログラムは 5 秒後にシャットダウンします。
代わりに CTRL_C_EVENT を使用できます。