我有一个WCF服务,我在AppFabric上使用IIS 7.5和Windows 2008进行托管。该服务按照建议设置为自动启动。 当服务启动时,它进入一个永不停止的while循环,请记住这是所需的行为。 while循环应该处理一些我不知道什么时候可用的数据。
问题是当我关闭网站或IIS时,服务一直在运行。所以我的问题是:
有没有办法确定IIS或网站已停止?
有没有更好的方法来实现这种永无止境的行为?
希望这里有足够的信息。
答案 0 :(得分:0)
好的,所以你有一个无限的轮询循环运行。这种设计很有意义,尽管它很不寻常。
我建议你启动一个单独的线程进行轮询。您的线程代码应如下所示:
void ThreadProc() {
try {
while(true) { ... }
}
catch (ThreadAbortException) {
//AppDomain shutdown
}
}
当关闭所有线程时将被中止。这是检测关机的技巧。
像这样启动线程:
new Thread(ThreadProc) { IsBackground = true }
答案 1 :(得分:0)
关于网站状态检测问题:如果您知道网站名称,则可以使用Microsoft.Web.Administration API确定网站是否已启动。 Learn IIS website
提供了一些很好的例子然而,我在这里第二个关注为什么你使用无限循环......