私はより良い例を求めていますboost::asio::deadline_timer
与えられた例は、常にタイムアウトしてclose
メソッドを呼び出します。タイマーで呼び出しcancel()
てみましたが、渡された関数がasync_wait
すぐに呼び出されます。
非同期TCPクライアントでタイマーを操作する正しい方法は何ですか?
私はより良い例を求めていますboost::asio::deadline_timer
与えられた例は、常にタイムアウトしてclose
メソッドを呼び出します。タイマーで呼び出しcancel()
てみましたが、渡された関数がasync_wait
すぐに呼び出されます。
非同期TCPクライアントでタイマーを操作する正しい方法は何ですか?
タイマーで cancel() を呼び出すと、 async_wait に渡された関数がすぐに呼び出されると述べています。これは予期される動作ですが、タイマー ハンドラーに渡されたエラーをチェックして、タイマーがキャンセルされたかどうかを判断できることに注意してください。タイマーがキャンセルされた場合、operation_aborted が渡されます。例えば:
void handleTimer(const boost::system::error_code& error) {
if (error == boost::asio::error::operation_aborted) {
std::cout << "Timer was canceled" << std::endl;
}
else if (error) {
std::cout << "Timer error: " << error.message() << std::endl;
}
}
うまくいけば、これが役に立ちます。そうでない場合、探している具体的な例は何ですか?