我曾经在application_start内计时,后来发现会因为iis回收而无法持续计时。后来我用了windows服务。但是最近我写了个网站,用户操作后可以创建一个线程向其他网站做类似心跳包的死循环,这会因为回收而导致循环被终止吗?假如不会的话,这两种之间有什么区别从而导致了这种差异
服务是不会停止的,当你有请求的时候,IIS就不会回收
我说的那种类似心跳包的情况下,一个用户访问产生了这个心跳包线程,然后再也没人访问网站会不会让这个线程在将来被终止?
@狼大人: 会,如果没有请求进入运行时,默认是20分钟就回收了
@吴瑞祥: 即使那个心跳包线程还在运行,依旧会被回收?
@吴瑞祥: 你这个线程也是在runtime里的吧,在runtime里就会被回收
当你的服务器正常接收客户端请求,CLR是不会回收的,只会自动处理回收机制。
当你服务器关闭或者其他问题,客户端与服务器端无法连接,进入常规的close,或者抛出异常。
我的建议,你必须得做一个高效心跳检测的算法。