У меня есть метод, который иногда зависает, если я вызываю его слишком много раз. Я не вижу значительного увеличения памяти или утечки памяти, когда это происходит. Но мой процессор застревает примерно на 13%, когда программа зависает.
Вот метод, который я вызываю:
private void FormWord(Col[] v)
{
char c = (char)0;
for (int i = 0; i < v.Length; i++)
{
switch (v[i])
{
case Col.grn:
string g = n.vih[rand.Next(n.vih.Length)];
if (CHECK_CAPITAL.Checked)
g = ToCapital(g);
TB_OUT.AppendText(g,Color.LightGreen);
break;
case Col.pur:
TB_OUT.AppendText(n.vio[rand.Next(n.vio.Length)],Color.LightBlue);
break;
case Col.cya:
TB_OUT.AppendText(n.sya[rand.Next(n.sya.Length)],Color.LightCyan);
break;
case Col.yel:
string k = n.kel[rand.Next(n.kel.Length)];
c = k.Last();
TB_OUT.AppendText(k, Color.LightYellow);
break;
case Col.red:
string p;
if (c != (char)0)
{
do
{
p = n.pun[rand.Next(n.pun.Length)];
} while (!p.StartsWith(c.ToString()));
TB_OUT.AppendText(p, Color.Pink);
break;
}
else
{
TB_OUT.AppendText(n.pun[rand.Next(n.pun.Length)], Color.Pink);
break;
}
default:
break;
}
}
TB_OUT.AppendText(Environment.NewLine);
}
Зависание происходит только в случаях, включая Col.red I ' m пытается создать случайную подстроку с условием, когда в случае возникновения Col.yellow подстрока Col.red должна начинаться с того же символа, что и результат Col.yellow. Это все еще происходит, даже когда я отключил исключения ContextSwitchDeadlock. Есть предложения?