検索

ホームページ  >  に質問  >  本文

C++ - プログラムを閉じるときに SetConsoleHandler を呼び出すと WINAPI 例外が発生する

マルチスレッドを使用してデータを取得し、それを配列に保存するプログラムを作成しました。その後、コンソール プログラムを閉じるとイベントがトリガーされ、このイベントで配列内のデータをファイルに書き込みました。 。
しかし、このプログラムを 10 分未満実行した場合、ファイルの書き込みは正常に行われますが、20 分以上プログラムを閉じると、いくつかのファイルが出力されるだけで、プログラム自体が終了します。

以下はこれらの場所に関係するコードです:
これはメイン関数の SetConsoleCtrlHandler への呼び出しです

リーリー

これが具体的な関数の実装です

リーリー

この問題を経験した人はいますか?
これはバッファか何かに関連していますか?なぜなら、直感的には、時間の経過とともにより多くのデータが受信される可能性があるからです。

仅有的幸福仅有的幸福2810日前702

全員に返信(1)返信します

  • 怪我咯

    怪我咯2017-05-16 13:26:41

    CTRL_CLOSE_EVENT にはタイムアウト機構があるため、データの書き込みにどれだけ時間がかかっても、プログラムは 5 秒後にシャットダウンします。
    代わりに CTRL_C_EVENT を使用できます。

    返事
    0
  • キャンセル返事