如何安排C#代码执行

时间:2012-05-29 07:04:59

标签: c# asp.net web-services

我正在使用ASP.Net和C#。我想在特定时间同步某些东西。我做了一个方法,这样做,它的工作。但我的问题是如何在特定时间每天调用此方法。

客户不信任任何第三方工具,因此无法使用它。

Windows服务不是一个好的解决方案。

如果我提供网络服务,我应该如何在每天的特定时间拨打电话?

例如,我想每天晚上7点开始运行方法。

2 个答案:

答案 0 :(得分:9)

启动时,将项目添加到具有固定过期的HttpRuntime.Cache。 当缓存项目到期时,请执行您的工作,例如WebRequest或您拥有的内容。 使用固定的到期时间将项重新添加到缓存中。

private static CacheItemRemovedCallback OnCacheRemove = null;

protected void Application_Start(object sender, EventArgs e)
{
    AddTask("DoStuff", 60);
}

private void AddTask(string name, int seconds)
{
    OnCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved);
    HttpRuntime.Cache.Insert(name, seconds, null,
        DateTime.Now.AddSeconds(seconds), Cache.NoSlidingExpiration,
        CacheItemPriority.NotRemovable, OnCacheRemove);
}

public void CacheItemRemoved(string k, object v, CacheItemRemovedReason r)
{
    // do stuff here if it matches our taskname, like WebRequest
    // re-add our task so it recurs
    AddTask(k, Convert.ToInt32(v));
}

答案 1 :(得分:0)

您可以使用Windows计划任务来运行应用程序(exe)或create windows service and use timer。看看Quartz.NET它也可以使用。