我正在设计一个网站,它使用Windows Forms(在Visual Studio 10中),其中例如我有五六个网址。现在我在我的网站xyz.com的主页上显示它们
我想要的是,我想计算总数。所有链接的推文和基于否的显示链接。他们被推文/转推的次数。
对于网址我们可以计算不。使用twitter api发送推文http://urls.api.twitter.com/1/urls/count.json?url=YourURL
我知道所有的事情,比如在字符串中接收JSON值并解析json以检索推文计数,然后根据优先级等比较和显示链接。
到目前为止,我一直在使用Click_Button启动所有过程。
但我想知道如何每10分钟自动完成这一切。它就像最终用户只需刷新页面就可以看到网址优先级。
答案 0 :(得分:1)
执行此操作的一种方法是运行与数据库交互的10分钟的计划任务。 Web应用程序还与DB交互,因此两个系统是不同的。
附注:强烈建议仅将控制台应用程序用作计划任务。如果您制作Windows窗体应用程序将会遇到一些问题。
正如Kieren Johnstone在另一个答案中指出的那样,最好的方法是编写一个Windows服务。
我仍然推荐上述解决方案作为第一步,因为它易于调试和测试。
此外,要认真考虑记录和错误报告 - 使用后台任务,你几乎不知道它在发生故障时所做的事情。
答案 1 :(得分:0)
如果时间本身并不重要(它不一定是10分钟),我建议绑定到用户使用你的应用程序时触发的任何事件。如果没有人使用它,计算任何东西都没有意义: - )
因此,您可以使用登录或页面加载,或者以大致类似于您希望达到的间隔的间隔发生的任何事情。
您始终可以将DateTime变量存储在某个位置,您可以检查该变量以查看上次计算的时间。类似的东西:
public void MyEventHasFired()
{
DateTime dateLastProcessed = ... //Database? Session data? Anything goes.
if(dateLastProcessed < DateTime.Now.AddMinutes(-10))
{
//calculate
...
dateLastProcessed = DateTime.Now;
}
}
答案 2 :(得分:0)
最佳解决方案绝对是Windows服务。它可以启动,停止和管理,它很容易记录,维护..
计划任务非常容易出问题。至少在Windows服务中,您可以将其配置为自动启动,如果出现问题则重新启动,您可以自己在代码中控制时间,并根据需要捕获/处理异常。
答案 3 :(得分:0)
我所知道的最佳调度程序是Quartz.net
使用起来并不简单,但效果很好。
你可以在那里找到一个asp.net的例子http://blogs.planetcloud.co.uk/mygreatdiscovery/post/ASPNET-Scheduled-Tasks-with-QuartzNET.aspx
无论如何我同意Kieren Johnstone:你应该使用Windows服务