监视外部传感器的ASP.NET应用程序(多线程)

时间:2014-03-22 21:20:25

标签: c# asp.net asp.net-mvc multithreading

我创建了一个MVC 4应用程序,它从一些外部传感器获取数据,然后根据所接收的值显示数据。外部传感器通过http页面(例如http:/// CheckValue)公开它们的值。 MVC应用程序必须不断检查这些值,假设每5秒钟一次。

基本的想法是,这个过程必须在后台和无限循环中完成,每个传感器都在不同的线程上。

问题是我不知道在哪里做到这一点的最佳位置,截至目前我只是在Global.aspx文件的Application_Start方法中为每个传感器创建一个新任务。

protected void Application_Start()
{
    foreach (var sensor in sensors)
    {
        Task.Factory.StartNew(() => sensor.readValue(5000));
    }
}

这是readValue()

的代码
public void readValue(int timespan)
{
    try
    {
        using HttpClient client = new HttpClient())
        {
            while(true){
                try
                {
                    string result = await client.GetStringAsync(url);
                    //result validation logic
                }
                catch(Exception)
                {
                    //Exception Handling
                }
                Thread.Sleep(timespan);
            }                 
        }
    }catch(Exception e)
    {
        Debug.Write(e.Message);
    }
}

我是ASP.NET的新手,所以我真的不知道这应该是在Application_Start方法中,还是根本不应该在MVC应用程序上,并在单独的Windows服务上进行(如果是这样,我如何将值发送回MVC应用程序)

0 个答案:

没有答案