如何 运行 一个 api 请求,直到在 c# 中满足条件

How to run an api request until a condition is met in c#

我是 C# 的新手,我的目的是从 API 调用中解析一个值并继续调用,直到该值介于 510 之间该参数。

我已经从 valuez 中成功解析了那个值并在 finalresult 中得到了正确的结果,现在我的问题是重复调用直到达到预期的值范围,我尝试调试下面的代码,但是当它到达 var timer 时,整个块会立即突出显示,而不是每一行都被单独访问。我知道在 5 到 10 之间停止的条件不在下面的代码中,但在我修改该部分之前它应该 运行 无休止。

示例响应

{{
"value1" : "input1",
"value2" : null,
"value3" : {"valuex" : 4,
"valuey" : 5,
"valuez" : 6}
"value4" : 17
}}

,

代码

var options = new RestClientOptions(Endpoint)
double finalresult = -1;

var startTimeSpan = System.TimeSpan.Zero;
var periodTimeSpan = System.TimeSpan.FromMinutes(1);

var timer = new System.Threading.Timer(async(e) =>
{
var client = new RestClient(options);
vsr request = new RestRequest();
var response = await client.GetAsync(request);
var requestContent = response.Content;
var parsed = JsonConvert.DeserializeObject<StatusResponse>(responseContent);
finalresult = statusResponse.value3.valuez

}, null, startTimeSpan, periodTimeSpan);

我想这就是你需要的:

public async Task<double> GetValuez()
{
  var options = new RestClientOptions(Endpoint)
  double finalresult = -1;

  var startTimeSpan = System.TimeSpan.Zero;
  var periodTimeSpan = System.TimeSpan.FromMinutes(1);
  var client = new RestClient(options);

  while (true)
  {
    var request = new RestRequest();
    var response = await client.GetAsync(request);
    var requestContent = response.Content;
    var parsed = JsonConvert.DeserializeObject<StatusResponse>(responseContent);
    finalresult = statusResponse.value3.valuez

    if (finalresult >= 5 && finalresult <= 10) return finalresult;

    await Task.Delay(periodTimeSpan);
  }
}

这是一个简单的循环,会一直请求直到满足条件。