我创建了一个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应用程序)