来自 WinHTTP Async 的句柄是否需要关闭?

Does handles from WinHTTP Async, needs to be closed?

WinHttpOpen(), WinHttpConnect() and WinHttpOpenRequest() 中使用 异步模式 WinHttpOpen() 后,是否需要关闭句柄。

我想他们需要,但是这是怎么做到的因为一切都是异步完成的,我已经看到回调中的最后一个调用事件是WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE,但我不确定情况是否总是如此(称为最后)。

那么我是否需要关闭手柄,如果是的话如何?

是的,需要关闭 WinHTTP 句柄。 WinHttOpen() 文档:

After the calling application has finished using the HINTERNET handle returned by WinHttpOpen, it must be closed using the WinHttpCloseHandle function.

对于异步模式,这可以在 class 析构函数上完成。在这种情况下,句柄可以是一个成员变量,因此它不会丢失。如果你使用的是main函数,只需关闭最后的句柄即可。