C# 后台工作人员仅在末尾工作

C# 后台工作人员仅在末尾工作,c#,C#,我有一个按钮事件,它执行以下操作: Available = true while (Available) { var cclient = new RestClient("http://192.168.1.1:1234/api/customers"); Log.log("http://192.168.1.1:1234/api/grab/customers"); var crequest = new RestRequest(Method.GET); request.A

我有一个按钮事件,它执行以下操作:

Available = true
while (Available)
{
    var cclient = new RestClient("http://192.168.1.1:1234/api/customers");
    Log.log("http://192.168.1.1:1234/api/grab/customers");
    var crequest = new RestRequest(Method.GET);
    request.AddHeader("content-type", "multipart/form-data; boundary=---011000010111000001101001");
    request.AddParameter("multipart/form-data; boundary=---011000010111000001101001", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"\"\r\n\r\n\r\n-----011000010111000001101001--", ParameterType.RequestBody);
    IRestResponse cresponse = client.Execute(crequest);
    Log.log(cresponse.StatusCode.ToString());
    if (cresponse.StatusCode.ToString() == "OK")
    {
        List<Rate> result = JsonConvert.DeserializeObject<List<Rate>>(cresponse.Content);
        var groupedData = from b in result.AsEnumerable()
                          group b by b.First_Name into g
                          select new
                          {
                              First_Name = g.Key,
                              //Count = g.Count(),
                              Qty = g.Sum(x => x.Qty)
                          };
        foreach (var x in groupedData)
        {
            Log.log(x.First_Name + " " + x.Qty.ToString());
        }
    }
    WaitSeconds(); //this waits 2 seconds to give it enough time to write to the log file
}
Task taskA = Task.Factory.StartNew(() => RunGet());
taskA.Wait(1000);
Available=true
while(可用)
{
var cclient=新的RestClient(“http://192.168.1.1:1234/api/customers");
Log.Log(“http://192.168.1.1:1234/api/grab/customers");
var crequest=new RestRequest(Method.GET);
request.AddHeader(“内容类型”,“多部分/表单数据;边界=-01100001110000101001”);
request.AddParameter(“多部分/表单数据;边界=--011000010111000001101001”,”--011000010111000001101001\r\n内容处理:表单数据;名称=\“\”\r\n\r\n-----011000010111000001001-”,参数类型.RequestBody);
IRestResponse Response=客户端.Execute(crequest);
Log.Log(response.StatusCode.ToString());
if(response.StatusCode.ToString()=“确定”)
{
列表结果=JsonConvert.DeserializeObject(response.Content);
var groupedData=来自result.AsEnumerable()中的b
b组由b名改为g名
选择新的
{
First_Name=g.Key,
//Count=g.Count(),
数量=总数量(x=>x数量)
};
foreach(groupedData中的变量x)
{
Log.Log(x.First_Name+“”+x.Qty.ToString());
}
}
WaitSeconds();//这将等待2秒,以便有足够的时间写入日志文件
}
while循环正在发生…但它不会像我期望的那样每两秒钟记录一次数据

我有一个按钮,使可用的假,然后它记录数据

我试着把它放到后台工作程序中,但仍然不记录数据

我不知道为什么


谢谢,

我可以通过添加以下内容来解决此问题:

Available = true
while (Available)
{
    var cclient = new RestClient("http://192.168.1.1:1234/api/customers");
    Log.log("http://192.168.1.1:1234/api/grab/customers");
    var crequest = new RestRequest(Method.GET);
    request.AddHeader("content-type", "multipart/form-data; boundary=---011000010111000001101001");
    request.AddParameter("multipart/form-data; boundary=---011000010111000001101001", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"\"\r\n\r\n\r\n-----011000010111000001101001--", ParameterType.RequestBody);
    IRestResponse cresponse = client.Execute(crequest);
    Log.log(cresponse.StatusCode.ToString());
    if (cresponse.StatusCode.ToString() == "OK")
    {
        List<Rate> result = JsonConvert.DeserializeObject<List<Rate>>(cresponse.Content);
        var groupedData = from b in result.AsEnumerable()
                          group b by b.First_Name into g
                          select new
                          {
                              First_Name = g.Key,
                              //Count = g.Count(),
                              Qty = g.Sum(x => x.Qty)
                          };
        foreach (var x in groupedData)
        {
            Log.log(x.First_Name + " " + x.Qty.ToString());
        }
    }
    WaitSeconds(); //this waits 2 seconds to give it enough time to write to the log file
}
Task taskA = Task.Factory.StartNew(() => RunGet());
taskA.Wait(1000);

现在我得到了一致的日志记录

日志记录的频率是更高还是更低?日志操作是否将数据刷新到文件中?您是否尝试放置断点?它只记录了1次…我已经等待了30秒…1分钟…但它只在我单击第二个按钮时记录,该按钮使可用变量为false,因此不会发生while循环。您只需执行“while(true){}”即可,无需创建变量。你确定编译器没有检测到无限循环并导致问题吗?@user3164339但那将是一个无限循环…我不希望它是无限的…这就是为什么我使变量可用…我单击另一个按钮使变量为false。使其跳出while循环。在Available为false之前,它是一个无限循环。