2012-05-26 29 views
3

我正在構建Indy的HTTP服務器上構建的Web服務器上,我發現如果我在瀏覽器中單擊一個請求,然後在第一個完成處理之前在另一個請求上單擊,可能會導致各種的問題。但我找不到任何方法來確定我是否處於取消請求中。每個請求都在其自己的線程內進行,因此將線程設置爲Terminated將是檢查的好方法,但似乎沒有發生。如果我正在處理的請求已被取消,我該如何獲得通知?

有沒有什麼辦法可以讓Indy通知我目前正在處理的請求已經被髮送它的瀏覽器取消了,而且它現在正試圖加載不同的東西?

回答

5

Web瀏覽器可以取消正在進行的HTTP請求的唯一方法是關閉其與服務器的連接。發生這種情況時,TIdHTTPServer會在下次嘗試訪問斷開連接的套接字時引發異常。只要讓異常通過TIdHTTPServer進行默認處理,就可以終止調用線程並清理套接字。這是正常的行爲。

相關問題