我有一个应该监听 HTTP 请求的 Windows 服务。为此,我正在使用 HttpListener。该服务已成功完成其工作。 但是,当服务设置为在系统启动时自动启动时,我的 HTTP 初始化有延迟。 HttpListener 构造函数需要 1 到 2 分钟才能返回。因此用户已成功登录,例如他的信使已经在线。 我读到 HttpListener is using HTTP.SYS: kernel mode http listener,所以可能是正常的,因为系统正在初始化。
我的问题是: 1)HttpListener初始化有这样的延迟正常吗? 2) 是否有任何解决方法来避免这种延迟(除了不使用 HttpListener)?
编辑: 问题未在 Windows 7 上重现。我只能在 Windows XP 机器上重现它。
最佳答案
我找到了解决方法。
我从服务的“OnStart 线程”调用 HttpListener 构造函数。如果我在另一个线程中移动构造函数调用并只是从服务的 OnStart 方法返回,HttpListener 会像往常一样快速初始化。
我不知道为什么会这样。只能假设 HttpListener 需要的某个组件随后在系统启动时被初始化。
顺便说一句,问题没有在 Windows 7 上重现。我只能在 Windows XP 机器上重现它。
关于c# - HttpListener 构造函数在系统启动时花费的时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12091007/