我希望客户端连接等待3或4秒后可能出现的某些数据。
我的想法是制作一个Thread.sleep并重新检查一些但我不想卡住其他客户端,因为有些客户不必等待,但有些客户端会这样做。
我是MVC的新手,希望你能给我一些建议。
/编辑 如果我使用此代码:
public string weatherAsync(string city)
{
AsyncManager.OutstandingOperations.Increment();
Task.Factory.StartNew(() =>
{
Thread.Sleep(TimeSpan.FromSeconds(10));
AsyncManager.Parameters["output"] = DateTime.Now.TimeOfDay.ToString();
AsyncManager.OutstandingOperations.Decrement();
});
return null;
}
public string weatherCompleted(string output)
{
return output;
}
请求我的页面两次同时第一个返回大约10秒后的时间,然后第二个页面需要10秒钟才能返回输出: - /
这是我的控制器还是Thread.sleep的问题?
答案 0 :(得分:4)
Thread.Sleep不会阻止其他用户,但它会阻止当前线程,因此其他客户端无法重用它。
如果您正在调用控制器中的某些外部Web服务,请查看ASP.NET MVC Asyncronous Methods In ASP.NET MVC 4中的异步APi。