首页 文章

使用C for Windows加速终止套接字WinHttp API的方法

提问于
浏览
0

我有一个用C / MFC编写的Windows服务应用程序,它通过Windows套接字 Build HTTP连接 . 它使用WinHttp* APIs来完成所有与套接字相关的操作 . 这一切都很有效,除非有人试图停止/卸载该服务,如果它正在通过套接字进行连接(特别是在无法 Build 此类连接的情况下,例如,如果我的网络电缆被拔掉)那些套接字API在服务关闭之前几秒钟不会返回(显然,服务中的机制等待我的套接字线程完成"gracefully" . )

我的问题是,如果我有一个打开的套接字句柄,以及通过调用WinHttpOpen(),WinHttpConnect()和WinHttpOpenRequest()获得的连接和请求句柄(HINTERNET类型),有没有办法强行制作任何其他WinHttp * API可能正在使用套接字立即返回?

PS . 我想在主线程开始等待套接字线程关闭之前这样做(在卸载/停止服务之前) .

2 回答

  • 1

    您可以从另一个线程关闭WinHTTP句柄 . 这会在您尝试避免的延迟时打破主线程上的阻塞调用 . 见How can a synchronous WinHttp request be cancelled?

  • 0

    [显然,服务中的机制等待我的套接字线程“优雅地”完成] - 如果你知道问题的原因,为什么不删除它?

    你为什么等?

相关问题