当有人试图停止我的服务时,我的服务有一个可能正在执行WinHttpSendRequest
的线程。
WinHttpCloseHandle documentation说:
应用程序可以使用
关闭HINTERNET
WinHttpCloseHandle
请求句柄来终止正在进行的同步或异步请求
但是,后来相同的文档似乎与此相矛盾。它说:
应用程序永远不应
WinHttpCloseHandle
调用同步请求。这可能会造成竞争条件。
我发现this blog post似乎同意我无法致电WinHttpCloseHandle
。
我想知道如何取消此操作以便我的服务可以优雅地停止?我真的不能等待WinHttpSendRequest
自然超时,因为它需要太长时间而且我的服务不能足够快地停止。我认为Windows将此报告为错误,然后在关机时强制终止服务。
我们将不胜感激。
答案 0 :(得分:0)
从后台线程调用WinHttpCloseHandle
以强制关闭句柄可能不是最佳解决方案。它仍然有效,并且原始调用者会收到类似“错误处理”错误代码的内容,并且请求将被强制终止。
滥用此权力可能不安全,而宁愿实施异步请求。但是,如果关闭陈旧服务,它将正常工作。