Переполнение стека потока - 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;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5