佚名通过本文主要向大家介绍了client connected,isclientconnected,client not connected,connected,connected是什么意思等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 在COM中访问asp页面中ResponseIsClientConnected?
描述:
描述:
有一个ATL的COM组件,会被asp页面调用,组件方法中有一个耗时很长的操作,现在想在这个耗时的操作中循环检查asp页面中的Response对象IsClientConnected方法,如果检查到用户已断开了与服务器的连接就停止操作并返回,但问题是即使页面处理过程中关掉浏览器,每次检查IsClientConnected属性也都返回真,结果就是这个方法会一直运行下去直到结束,而用户在此过程中对系统中其他页面的访问也都会被阻塞,不知道是哪里出了问题
代码如下:
STDMETHODIMP CCommandTest::Test(...)
{
LOG("begin check");
for (int i=0; i<10; ++i) {
CComPtr<IObjectContext> pObjContext;
if (SUCCEEDED(GetObjectContext(&pObjContext))) {
CComQIPtr<IGetContextProperties> pGcp(pObjContext);
if (pGcp != 0) {
CComVariant v;
if (SUCCEEDED(pGcp->GetProperty(L"Response", &v))) {
CComDispatchDriver drv(v.pdispVal);
CComVariant v;
if (SUCCEEDED(drv.GetPropertyByName(L"IsClientConnected", &v))) {
if (v.boolVal == VARIANT_TRUE) {
LOG(" client is still connected"); // 每次都运行到这里
}
else {
LOG(" CLIENT DISCONNECTED!!");
break;
}
}
}
}
}
Sleep(1000);
}
LOG("end check");
return S_OK;
}