[英]Call a method after a certain period of time without blocking
我正在制作一個Web服務器應用程序,並且有一個Listener
類,它等待連接並生成HTTPConnection
,每次發出連接請求時,將創建的新Socket
傳遞給它。 HTTPConnection
類異步等待數據(使用Socket.BeginReceive
)。
我需要延遲執行以超時。 如果客戶端在一定時間后未能發送完整的HTTP請求,我想關閉連接。 一旦構造了HTTPConnection
對象,等待期就應該開始,如果客戶端發送請求失敗,則調用Timeout
函數。 顯然,我不能將構造方法暫停幾秒鍾,因此等待需要異步進行。 我還需要能夠取消任務。
我可以做new Thread(...)
等等,但這是非常糟糕的設計。 還有其他方法可以安排以后要調用的方法嗎?
您可以將所有延遲的事件追加到某個有序的數據結構中,並在一定間隔下進行后台任務檢查(如果必須執行超時事件)。
您也可以將這些事件保存在數據庫中(如果您有很多客戶端,我想這可能會導致大量內存使用)。
您的后台任務也可以從數據庫中獲取所有過期的事件並立即處理它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.