【发布时间】:2015-02-15 20:33:53
【问题描述】:
请看下面我的代码
HttpResponseMessage messge = client.GetAsync("ladders/get/"+ID+").Result;
if (messge.IsSuccessStatusCode)
{
string result = messge.Content.ReadAsStringAsync().Result;
}
我需要执行此代码,直到“结果”变量不为空或最多 30 分钟。每分钟将在 30 分钟内执行以下代码,直到 (result !=null)。
HttpResponseMessage messge = client.GetAsync("ladders/get/"+ID+").Result;
让我们看看,如果在 30 分钟内没有得到“结果”值,那么 30 分钟后功能将自动停止并通知用户未找到该值。同时用户可以访问其他页面。
请建议我如何解决这个问题.....
【问题讨论】:
-
考虑在此处使用计时器。间隔为 1 分钟,如果达到 30 分钟或得到结果,则取消计时器。有关您的选择,请参阅stackoverflow.com/questions/1416803/…。我会为您推荐 System.Threading.Timer 。另请注意,如果您的滴答处理程序花费的时间过长,计时器滴答事件可能会重叠。
-
如果我们谈论的是 Web 开发,那么请考虑使用 setTimeout/setInterval 之类的方法执行上述逻辑,每分钟轮询一次 Web 服务器。
标签: c# asp.net multithreading asynchronous async-await