4

WinHttpSendRequest当有人试图停止我的服务时,我的服务有一个线程可能正在执行。

WinHttpCloseHandle文档说:

HINTERNET应用程序可以通过关闭请求句柄来终止正在进行的同步或异步请求WinHttpCloseHandle

但是,后来在相同的文档中似乎与此相矛盾。它说:

应用程序永远不应WinHttpCloseHandle调用同步请求。这可能会产生竞争条件。

我发现这篇博客文章似乎同意我不能打电话WinHttpCloseHandle

我想知道如何取消此操作以便可以正常停止我的服务?我真的不能真正等待WinHttpSendRequest超时,因为它需要很长时间,而且我的服务没有足够快地停止。我认为 Windows 将此报告为错误,然后在关闭时强行终止该服务。

一个想法将不胜感激。

4

1 回答 1

1

调用WinHttpCloseHandle后台线程来强制关闭句柄可能不是最好的解决方案。它仍然有效,并且原始调用者将收到类似“错误句柄”错误代码的内容,并且请求将被强制终止。

滥用这种权力可能是不安全的,人们宁愿实现异步请求。但是,在关闭陈旧服务的情况下,它会正常工作。

于 2012-01-20T09:43:58.210 回答