Переполнение стека потока - C#
Формулировка задачи:
Столкнулся с такой проблемой: Работаю в программе, и видимо когда много действий произвожу, при попытке сделать определенное действие мне вылетает ошибка:
Переполнение стека потока - видимо ему не хватает памяти потока, которая выделяется для программы или как то так, помогите решить проблему
Решение задачи: «Переполнение стека потока»
textual
Листинг программы
if (i < GlobalRoutesList.globalRoutesList.Count)
{
if (j < GlobalRoutesList.globalRoutesList[i].RoutesList.Count)
{
Int32 LastIndex = GlobalRoutesList.globalRoutesList[i].RoutesList[j].Path.Count - 1;
if (GlobalRoutesList.globalRoutesList[i].RoutesList[j].Path[LastIndex].Server2 != SenderServer)
{
while (GlobalRoutesList.globalRoutesList[i].RoutesList[j].ServersForLook.Count > 0)
{
if (CheckServer(GlobalRoutesList.globalRoutesList[i].RoutesList[j].VisitedServers,
GlobalRoutesList.globalRoutesList[i].RoutesList[j].ServersForLook[0]) == true)
{
GlobalRoutesList.globalRoutesList[i].RoutesList[j].ServersForLook.RemoveAt(0);
}
else
{
for (int a = 0; a < GlobalRoutesList.globalRoutesList[i].RoutesList[j].ServersForLook[0].NeighboringServers.Count; a++)
{
if (CheckServer(GlobalRoutesList.globalRoutesList[i].RoutesList[j].VisitedServers,
GlobalRoutesList.globalRoutesList[i].RoutesList[j].ServersForLook[0].NeighboringServers[a]) == false)
{
Route newRoute = new Route();
if (CheckServer(GlobalRoutesList.globalRoutesList[i].RoutesList[j].VisitedServers,
GlobalRoutesList.globalRoutesList[i].RoutesList[j].ServersForLook[0]) == false)
{
GlobalRoutesList.globalRoutesList[i].RoutesList[j].VisitedServers.Add
(GlobalRoutesList.globalRoutesList[i].RoutesList[j].ServersForLook[0]);
}
if (CheckServer(GlobalRoutesList.globalRoutesList[i].RoutesList[j].ServersForLook,
GlobalRoutesList.globalRoutesList[i].RoutesList[j].ServersForLook[0].NeighboringServers[a]) == false)
{
newRoute.ServersForLook.Add(GlobalRoutesList.globalRoutesList[i].RoutesList[j].ServersForLook[0].NeighboringServers[a]);
}
NewRoute(GlobalRoutesList.globalRoutesList[i].RoutesList[j],ref newRoute);
for (int b = 0; b < ConnectionList.connectionList.Count; b++)
{
if ((ConnectionList.connectionList[b].Server1 == GlobalRoutesList.globalRoutesList[i].RoutesList[j].ServersForLook[0]) &&
(ConnectionList.connectionList[b].Server2 == GlobalRoutesList.globalRoutesList[i].RoutesList[j].ServersForLook[0].NeighboringServers[a]))
{
if (CheckPaths(newRoute,ConnectionList.connectionList[b]) == false)
{
newRoute.Path.Add(ConnectionList.connectionList[b]);
}
}
}
if (CheckRoute(GlobalRoutesList.globalRoutesList[i].RoutesList,newRoute) == false)
{
GlobalRoutesList.globalRoutesList[i].RoutesList.Add(newRoute);
}
}
}
MinPath(i,j + 1,SenderServer);
return;
}
}
MinPath(i,j + 1,SenderServer);
return;
}
else
{
MinPath(i,j + 1,SenderServer);
return;
}
}
else
{
MinPath(i+1,0,SenderServer);
return;
}
}
else
{
return;
}