如果我正在处理的请求被取消,我该如何被告知?

时间:2012-05-26 17:45:35

标签: delphi http delphi-xe indy

我正在开发一个基于Indy的HTTP服务器构建的Web服务器,我发现如果我在浏览器中点击一个请求,然后在第一个请求完成之前再点击另一个请求,则会导致所有各种各样的问题。但我无法找到任何方法来确定我是否在取消请求。每个请求都发生在自己的线程中,因此将线程设置为Terminated将是一种很好的检查方式,但这似乎并没有发生。

有什么方法可以让Indy通知我它当前处理的请求已经被发送它的浏览器取消了,现在它正在尝试加载不同的东西吗?

1 个答案:

答案 0 :(得分:5)

Web浏览器可以取消正在进行的HTTP请求的唯一方法是关闭其与服务器的连接。发生这种情况时,TIdHTTPServer将在下次尝试访问断开连接的套接字时引发异常。只是让异常传递到TIdHTTPServer进行默认处理,这样它就可以终止调用线程并清理套接字。这是正常行为。