如何在asp.net中动态运行进程

时间:2012-01-03 15:48:27

标签: c# asp.net winforms visual-studio-2010 twitter

我正在设计一个网站,它使用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分钟自动完成这一切。它就像最终用户只需刷新页面就可以看到网址优先级。

4 个答案:

答案 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服务