閉じるを使用してキャンセルしない場合、いくつかの問題があります。boost :: asio :: ip :: tcp :: socket :: cancel()とsocket :: close()を使用する
close
関数はソケットを閉じることができ、未解決の非同期操作はboost::asio::error::operation_aborted
エラーを返して停止します。
の代わりにcancel
を使用する理由を教えてください。
非同期操作が実行されていると心配ですが、cancel
はキャンセルできませんでしたか?
はasio::ip::tcp::resolve::cancel
と同じように、私は多くの時間がasync_resolve
を呼び出した後resolve_handler
をキャンセルしようとしたが、resolve_handler
は常に無boost::asio::error::operation_aborted
エラーで返されます。
私はresolve_handler
が実行されていると思いますか?
はい?
ただし、キャンセル()の注釈も状態* Windows Vista、Windows Server 2008、およびそれ以降では、CancelIoEx関数が常に使用されます。この機能には上記の問題はありません。 –
サム・ミラーに助けていただきありがとうございます。 –