代码的这一部分为客户端提供了一个ID,通过检查ID是否已被使用来检查下一个最高ID.由于某种原因,这导致了一个永无止境的循环为什么会这样?
int IDcounter = 0;
bool IDfound = false;
bool IDused = false;
while (!IDfound)
{
Console.WriteLine("Current ID check " + IDcounter);
Console.WriteLine("Number of clients " + clientList.Count);
foreach (Client id in clientList)
{
if (id.ID == IDcounter)
{
IDused = true;
IDcounter++;
break;
}
}
if (!IDused)
{
client.ID = IDcounter;
IDfound = true;
}
}
clientList.Add(client);
Run Code Online (Sandbox Code Playgroud)
您需要else在最终if语句中添加:
if (!IDused)
{
client.ID = IDcounter;
IDfound = true;
}
else
{
// Reset the IDUsed status
IDUsed = false;
}
Run Code Online (Sandbox Code Playgroud)
考虑当您发现您检查的第一个ID由某个客户端获取时会发生什么.你设置IDUsed为true,然后break循环.该if (!IDUsed)支票是假的(因为ID 被使用),所以你重复.但请注意,你从未IDUsed回头false.事实上,循环中没有任何地方发生,所以你永远循环.
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |