代码之家  ›  专栏  ›  技术社区  ›  brainimus user417509

Web应用程序启动时启动计时器

  •  1
  • brainimus user417509  · 技术社区  · 14 年前

    我想开始 System.Threading.Timer 在我的应用程序中,当它启动时(可能部署是正确的词)。我看到你可以用 Application_Start() 但这只是 fired once the first request comes to the application . 我需要计时器在应用程序运行时立即启动,这样即使用户没有与站点交互,它也可以检查要处理的工作。如何让应用程序在计时器启动并运行后启动它?

    4 回复  |  直到 14 年前
        1
  •  4
  •   JMarsch    14 年前

    应用程序启动实际上会在应用程序启动并运行时触发。您遇到的问题是,在收到第一个请求之前,IIS实际上不会启动应用程序。

    另一件重要的事情要知道:由于不活动,IIS可以关闭您的应用程序。如果您有需要一直运行的东西,您可能会寻找不同于ASP.NET应用程序的车辆。可能是Windows服务,甚至是计划任务。

        2
  •  8
  •   Glennular    14 年前

    可以使用新的ASP.NET 4模式 AlwaysRunning . 这样它就不会等待第一个请求启动

    <applicationPools>
         <add name="MyAppWorkerProcess" managedRuntimeVersion="v4.0" 
             startMode="AlwaysRunning" />
    </applicationPools> 
    

    见: http://www.asp.net/learn/whitepapers/aspnet4

        3
  •  0
  •   Damien    14 年前

    这是正常的行为-应用程序需要由请求页面的人“触发”。

    在IIS 7.5及更高版本(例如Win 2008/Win7)中,有一个自动执行此操作的功能-有关详细信息,请参阅此链接: http://visualstudiomagazine.com/articles/2010/02/18/preloading-aspnet-applications.aspx

    在我公司生产的其他ASP.NET Web服务器(在线网址www.neockernel.com)中,这是通过指定将使用服务器配置文件预加载的某些页面来完成的。本质上,在任何人请求与该页关联的URL之前,该页将被传递到ASP.NET处理管道并编译/拆分。

        4
  •  0
  •   azamsharp    14 年前

    一种方法是使用javascript setinterval方法启动计时器。这需要发生在每一页上,所以您将把它放在母版页中。