遭遇した興味深いシナリオがあり、最善の解決策を判断するのに苦労しています。
次の foreach ループがあるとします。
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();
}
質問:私ができるようにする必要があるのは、次に進む前に、そのリクエストがMakeRequest()から戻る必要がある時間を指定するIntervalInSecondsの値を各 Request に与えることです。たとえば、これを 10 に設定して 10 秒が経過した場合、先に進みたいと思い、既存の MakeRequest() 呼び出しを完全に忘れます。
これを達成するために使用できるさまざまな方法をたくさん調査しましたが、実際にそれを行う方法はわかりません。