我希望我的 Web 服务每 X 小时调用一次清理例程,没有任何用户的输入,也没有调用“启动清理服务”。我知道我可以调用一个方法来启动这个服务,但我根本不想要用户交互。我想发布此服务,它会自动启动,并每隔 X 小时运行一次我的清理过程。
有任何想法吗?
我希望我的 Web 服务每 X 小时调用一次清理例程,没有任何用户的输入,也没有调用“启动清理服务”。我知道我可以调用一个方法来启动这个服务,但我根本不想要用户交互。我想发布此服务,它会自动启动,并每隔 X 小时运行一次我的清理过程。
有任何想法吗?
您可以在文件中设置一个每隔 X 小时触发一次的计时器Global.asax.cs
,或者您也可以创建一个每隔 X 小时触发一次的计划任务来触发清理服务。
如果项目中没有全局文件,您可以通过向项目中添加一个来简单地添加一个。为此,右键单击项目 -> 添加 -> 新项目,然后在弹出的对话框中选择全局应用程序类并点击添加。然后在Application_Start
事件中,您可以初始化计时器以执行操作。
public class Global : System.Web.HttpApplication
{
private static System.Threading.Timer timer;
protected void Application_Start(object sender, EventArgs e)
{
var howLongTillTimerFirstGoesInMilliseconds = 1000;
var intervalBetweenTimerEventsInMilliseconds = 2000;
Global.timer = new Timer(
(s) => SomeFunc(),
null, // if you need to provide state to the function specify it here
howLongTillTimerFirstGoesInMilliseconds,
intervalBetweenTimerEventsInMilliseconds
);
}
private void SomeFunc()
{
// reoccurring task code
}
protected void Application_End(object sender, EventArgs e)
{
if(Global.timer != null)
Global.timer.Dispose();
}
}
有关全局文件的更多信息,您可能需要参考MSDN