我正在制作一个网络服务器应用程序,我有一个等待连接的Listener
类,并生成一个HTTPConnection
,并在每次创建时传递新的Socket
连接请求已成立。 HTTPConnection
类异步等待数据(使用Socket.BeginReceive
)。
我需要延迟执行超时。如果客户端在一段时间后未能发送完整的HTTP请求,我想关闭连接。构建HTTPConnection
对象后,等待期应该开始,如果客户端无法发送请求,则调用Timeout
函数。显然,我不能暂停构造函数方法几秒钟,因此等待需要发生异步。我还需要能够取消任务。
我可以做new Thread(...)
和所有,但那是非常糟糕的设计。有没有其他方法来安排稍后调用的方法?
答案 0 :(得分:1)
如果存在必须执行的超时事件,您可以将所有推迟的事件附加到某些有序数据结构,并在某个时间间隔检查后台任务。
您也可以将这些事件保存在数据库中(如果您有很多客户端,我认为它可能会导致高内存使用率)。
此外,后台任务可以从数据库中获取所有过期事件并立即处理它们。