HttpSendRequest 导致线程无法退出的问题
无意测试出来的一个东东
但是目前只在一个公司的一台机子上是这个情况, 在我自己机子上是正常的。
我有一个MFC的工程, 在App的InitInstance中访问网络, 开始用MFC的CInternetSession类去访问一个HTTPS服务器, 结果如果调用了CHttpFile的SendRequest函数, 该进程无法结束(InitInstance返回false, WInMain退出后, 进程依然存在, 有几个线程在等待)
然后我用SDK又测试了一下, 还是这样(HttpSendRequest调用后, 无法退出)
望各位大侠帮忙, 先申明如果是在对话框中执行, 比如按钮, 然后执行, 是正常的(OnInitialDialog中执行也不正常)
HINTERNET hNet = ::InternetOpen("Name", INTERNET_OPEN_TYPE_DIRECT,
NULL,
NULL,
0);
// IP地址, 端口
HINTERNET hSession = InternetConnect(hNet, "211.88.25.175",
8443,
NULL,
NULL,
INTERNET_SERVICE_HTTP,
0,
0 );
HINTERNET hRequest = HttpOpenRequest( hSession, "POST", "/DRMProject/drmServer",
NULL,NULL,NULL,INTERNET_FLAG_SECURE,1);
DWORD dwSecurityFlag = 0;
DWORD dwOut = sizeof(DWORD);
if (!InternetQueryOption( hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwSecurityFlag, &dwOut ))
{
return FALSE;
}
dwSecurityFlag |= (SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_FLAG_IGNORE_REVOCATION | SECURITY_FLAG_IGNORE_WRONG_USAGE |
INTERNET_FLAG_IGNORE_CERT_CN_INVALID );
if (!InternetSetOption( hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwSecurityFlag, dwOut ))
{
return FALSE;
}
//*/
BOOL bRet = HttpSendRequest( hRequest, NULL, 0, "1111", 4 );
DWORD dwErr = GetLastError();
return FALSE;