C# 具有多个等待函数的Foreach执行数组索引长度的两倍 我一直在努力寻找解决办法。

C# 具有多个等待函数的Foreach执行数组索引长度的两倍 我一直在努力寻找解决办法。,c#,foreach,async-await,C#,Foreach,Async Await,我有一个foreach循环 int[] guardianContacts = {1,2,3}; foreach (var s in guardianContacts) { string response = await _messageRepo.SendMessage(s.ContactNumber, model.TextMessage); SmsDetails modelDetails = new SmsDetails { SmsType = "manu

我有一个foreach循环

int[] guardianContacts = {1,2,3};
foreach (var s in guardianContacts)
{
    string response = await _messageRepo.SendMessage(s.ContactNumber, model.TextMessage);
    SmsDetails modelDetails = new SmsDetails
    {
        SmsType = "manual",
        StudentGuardianId = s.StudentGuardianId,
        AspNetUserId = member.Id,
        DateSent = DateTime.Now,
        Status = response,
        Message = model.TextMessage
    };
 await _messageRepo.InsertSmsDetails(modelDetails);
}

很明显,变量
guardianContacts
只有3个索引

但当它执行时。它的循环次数是索引长度的两倍,在本例中,我运行它时有3个,它循环6次。请问为什么会这样?顺便说一下,我正在使用
async和wait

更新:


var-guardianContacts={1,2,3}
int[]guardianContacts={1,2,3}

注意:这行代码
string response=wait\u messageRepo.sendmages(s.ContactNumber,model.TextMessage)调用api请求

我这样做是为了检查它在没有等待的调用的情况下循环了多少次,结果是
3

int[] guardianContacts = {1,2,3};
int ctr = 0
foreach (var s in guardianContacts)
{
    ctr++;
}
也许会取代

 var guardianContacts = {1,2,3};

以下代码:

        int[] guardianContacts = { 1, 2, 3 };
        foreach (var s in guardianContacts)
        {
            Response.Write(s + "<br />");
            Response.Flush();
        }

这里的问题是,我对Microsoft.jQuery.Unobtrusive.Ajax有多个引用,这就是它调用两次的原因
不编译EthatAnks@Jonesopolis,请查看更新这应该是注释,因为OP显然能够运行一些代码。。。只是和帖子里提供的不同。。。
        int[] guardianContacts = { 1, 2, 3 };
        foreach (var s in guardianContacts)
        {
            Response.Write(s + "<br />");
            Response.Flush();
        }
1
2
3