是WinINET可以重入吗?

时间:2010-09-07 20:21:24

标签: windows winapi wininet winhttp

我发现WinHTTP不可重入(12)。 WinINET是可以重入的吗?

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

1 个答案:

答案 0 :(得分:3)

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

在COM应用程序中使用WinINET可能会产生一些影响。在Different Handling of Asynchronous Requests中描述了WinINet和WinHTTP异步和同步请求的一些差异。

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

如果您的应用程序部分不够大并且仅使用HTTP / HTTPS,我建议您to port it from WinINet Applications to WinHTTP。如果您确实想要或必须留在WinINET,您可以在您的问题中发布一个示例,说明如何在您的应用程序中使用WinINet。可能更改代码可以解决您的多线程问题。