32.4.4  线程和服务


使用服务时,必须处理线程。如前所述,如果服务的初始化花费的时间过多,则SCM就假定服务启动失败。为了解决这个问题,必须创建线程。


服务类中的OnStart()方法必须及时返回。如果从TCPListener类中调用一个AcceptSocket()之类的停滞方法,就必须启动一个线程去完成调用工作。使用能处理多个客户机的联网服务器时,线程池也是非常有用的。AcceptSocket()方法应接收调用,并在线程池的另一个线程中进行处理,这样就不需等待代码的执行,系统看起来似乎是立即响应的。