Вам необходимо добавить else
в окончательный оператор if
:
if (!IDused)
{
client.ID = IDcounter;
IDfound = true;
}
else
{
// Reset the IDUsed status
IDUsed = false;
}
Подумайте, что происходит, когда вы обнаружите, что первый проверенный вами идентификатор получен каким-то клиентом. Вы устанавливаете IDUsed
на true
, а затем break
цикл. Проверка if (!IDUsed)
является ложной (поскольку использовался идентификатор ), и поэтому вы повторяете. Но обратите внимание, что вы никогда не устанавливали IDUsed
обратно на false
. И на самом деле, нигде в цикле не происходит, и поэтому вы зацикливаетесь вечно.