繁体   English   中英

使用Global.asax.cs中的RegisterCacheEntry或Timer start()和stop()创建周期性事件会更好吗?

[英]is it better to create periodic events using RegisterCacheEntry in Global.asax.cs or Timer start() and stop()?

谁能在Global.asax.cs中的RegisterCacheEntry和Timer之间提供更好的选择?

RegisterCacheEntry()示例

    private void RegisterCacheEntry()
    {
        // Prevent duplicate key addition
        if (null != HttpContext.Current.Cache[Dummy_CacheItem]) return;

        HttpContext.Current.Cache.Add(Dummy_CacheItem, "Test", null, DateTime.MaxValue,
            TimeSpan.FromMinutes(1), CacheItemPriority.NotRemovable,
            new CacheItemRemovedCallback(CacheItemRemovedCallback));
    }

    public void CacheItemRemovedCallback(
        string key,
        object value,
        CacheItemRemovedReason reason
        )
    {
           // call the function to be run periodically
    }

计时器示例http://www.aspfree.com/c/a/C-Sharp/Timer-Objects-in-Windows-Services-with-C-NET/

请告诉我。 谢谢!

他们都不去做一个Windows服务并使用一个计时器。

使用对象缓存作为计时器是严重的误用,这会使您的代码可读性差很多。 还请记住,计时器仅在应用程序池处于活动状态时才运行,并且您无法控制何时回收池。

要以特定间隔运行任务,应使用Windows Task Scheduler。 编写控制台应用程序并创建计划的任务。

该解决方案比编写Windows服务简单,并且提供了有关任务何时运行的更多选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM