在中断下载 调用IdHTTP1.Disconnect()时候出现一个异常并提示Connection Closed Gracefully

wenyongjie 2008-11-19 03:51:08
怎么去掉这个提示
try
catch不行,试过了网上不少的帖子,但都不行,郁闷了
...全文
208 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hnsls33 2008-11-19
  • 打赏
  • 举报
回复
不懂,帮顶
僵哥 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wenyongjie 的回复:]
谢谢,我找个高版本先,
[/Quote]
要不看看这个能用不:http://download.csdn.net/source/583914
wenyongjie 2008-11-19
  • 打赏
  • 举报
回复
谢谢,我找个高版本先,
僵哥 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wenyongjie 的回复:]
我的是8.0。25版的
[/Quote]
版本太低,我就没办法了.
wenyongjie 2008-11-19
  • 打赏
  • 举报
回复
我的是8.0。25版的
僵哥 2008-11-19
  • 打赏
  • 举报
回复
不清楚使用的是Indy的什么版本,如果是最新的Indy10,可以用一个新的TIOHandler类(继承于TIdIOHandlerStack),赋值给IdHttp的IOHandler.
在该新类当中实现CheckForDisconnect过程
class TMyIOHandlerSocket :public TIdIOHandlerStack{
public:
void __fastcall CheckForDisconnect(bool ARaiseExceptionIfDisconnected,bool AIgnoreBuffer);
};

void __fastcall TIdIOHandlerStack.CheckForDisconnect(bool ARaiseExceptionIfDisconnected,bool AIgnoreBuffer);
{
bool LDisconnected;

// ClosedGracefully // Server disconnected
// IOHandler = nil // Client disconnected
if (ClosedGracefully ){
if (BindingAllocated())(
Close();
// Call event handlers to inform the user that we were disconnected
DoStatus(hsDisconnected);
//DoOnDisconnected;
}
LDisconnected = true;
} else {
LDisconnected = ! BindingAllocated;
}
// Do not raise unless all data has been read by the user
if (LDisconnected) {
if ((InputBufferIsEmpty() || AIgnoreBuffer) && ARaiseExceptionIfDisconnected ) {
RaiseConnClosedGracefully(); //如果不想弹出消息就在这里修改,你可以在关闭的时候设置一个标志从而判断是否需要发出错误.当然,这是不建议的.
}
}
}


实际上你应该在调用IdHTTP.Get/IdHTTP.Post之类的那个线程当中去拦截错误消息.

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧