我想制作一个RESTful API(或任何其他可以完成它的方式),让它在一个循环中工作,每天在同一时间执行指定的任务。
具体来说,我希望它能够访问外部API,比方说,每天午夜,请求指定的数据并相应地更新数据库。我知道如何向API发出请求并让它做一些事情。但我希望它能自动完成,所以我甚至不需要与它进行交互,甚至不必提出请求。
这样做的原因是我正在开发一个需要多个平台的项目(即使它只是一个平台,用户也会是几个)而且我无法向外部API发出请求(主要是因为每次用户登录或点击每个平台上的按钮时,都会进行试用,这是一个学校项目。
我不知道如何使用Web服务(或者甚至可能)。我尝试使用Web表单与BackgroundWorker进行异步,但没有。
我想我可能会在经验更丰富的人身上获得更好的运气。
希望你能帮助我。
先谢谢, 法比奥。
答案 0 :(得分:1)
不知道我是否做对了,但在我看来,最简单的方法是做你想要的(让节目安排在每天给定的时间工作)是使用Windows Scheduler安排你的应用程序始终在您想要的特定时间运行。
答案 1 :(得分:0)
由于@Pedro Gaspar - LoboFX的帮助,我设法到达那里。 我不想要Windows Scheduler,因为我希望它反映在代码上,而且我无法访问服务器所在的位置。那就是说,让我在那里的是这样的事情:
private static string LigacaoBD="something";
private static Perfil perfil = new Perfil(LigacaoBD);
protected void Page_Load(object sender, EventArgs e)
{
Task.Factory.StartNew(() => teste());
}
private void teste()
{
bool verif = false;
while (true)
{
if (DateTime.UtcNow.Hour + 1 == 22 && DateTime.UtcNow.Minute == 12 && DateTime.UtcNow.Second == 0)
verif = false;
if (!verif)
{
int resposta = perfil.Guardar(DateTime.UtcNow.ToString());
verif = true;
}
Thread.Sleep(1000);
}
}
它通过类库插入数据库。并且通过这个循环,它保证它只插入一次(因此bool)并且当它到达指定的小时,分钟和秒时它重置,允许它再次插入。如果发生了某些事情,服务器发生故障,当它重新启动时,无论如何都会插入。唯一的问题是,如果它已经插入并且服务器发生故障,它将再次插入。但是为此存在存储过程。好吧,不是DateTime.UtcNow.ToString(),但这只是一个测试。