4

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

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

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

如果我做一个网络服务,我应该如何在每天的特定时间调用它?

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

4

2 回答 2

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));
}
于 2012-05-29T07:15:20.237 回答
0

您可以使用 windows 计划任务来运行应用程序 (exe) 或创建 windows 服务并使用 timer。看看它也可以使用的Quartz.NET 。

于 2012-05-29T07:08:57.920 回答