我遇到了一个有趣的场景,我无法确定最佳解决方案是什么。
假设我有以下 foreach-loop
Request[] requestArray = //Get Array of Request objects from somewhere
foreach(IRequest r in requestArray)
{
var response = r.MakeRequest();
}
public class Request:IRequest
{
public double IntervalInSeconds {get;set;} //Allowed Time To Complete Request
public Response MakeRequest()
{
//Perform arbitrary operation, could be long or short running
}
}
public interface IRequest
{
Response MakeRequest();
}
问题:我需要做的是给每个请求一个IntervalInSeconds值,指定在我们继续之前该请求必须从MakeRequest()返回多长时间。例如,如果我们将它设置为 10,并且 10 秒过去了,我想继续前进,完全忘记现有的 MakeRequest() 调用。
我研究了很多不同的方法可以用来实现这一点,但不知道如何真正做到这一点。