1

我看到 WinHTTP 不可重入(12)。WinINET 是可重入的吗?

我们有一个 ActiveX 控件,它与 WinINET 进行同步 HTTP。如果浏览器(在 javascript 中)触发异步 http 请求(ajax)然后立即调用 ActiveX 操作(相同的 IE 进程),看起来这两个操作是交错的,可能在同一个 API 上可重入,并打破 WinINET 状态: ajax 上的 clearInterval 错误地失败了一次。我们将 EXT 用于 ajax,并且 EXT 假设 clearInterval 第一次工作。

4

1 回答 1

3

Windows Internet (WinINet) API 的一个重要限制是 WinINet 不应在服务中使用(仅在 GUI 应用程序中),因为可能出现对话框,Windows HTTP 服务 (WinHTTP) 没有限制。它是为服务应用程序设计的,改进了对异步请求的支持。在我的信息中,WinHTTP 是可重入的。如果您有其他参考,请发布。

在 COM 应用程序中使用 WinINET 确实会产生一些影响。在异步请求的不同处理中描述了 WinINet 和 WinHTTP 如何异步和同步请求的一些差异。

WinINET 的最后一次更改是针对Windows XP 和 Windows Server 2003 R2。WinHTTP 在Windows Server 2008 和 Windows Vista中有一些新功能。

如果您的应用程序部分不够大并且仅使用 HTTP/HTTPS,我建议您将其从 WinINet Applications 移植到 WinHTTP。如果您确实想要或必须继续使用 WinINET,您可以在问题中发布如何在应用程序中使用 WinINet 的示例。可能更改代码可以解决您的多线程问题。

于 2010-09-07T22:42:29.153 回答