Статический список не всегда содержит элементы - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть статический класс в c # / Asp.Net

UPDATE Спасибо за помощь и интерес до сих пор. Что совершенно очевидно, так это то, что в настоящее время я не могу воспроизвести это по требованию, поэтому я добавлю некоторые дополнительные проверки, чтобы попытаться определить, где и как возникает проблема. Если я найду что-то интересное, я выложу обновление.

public static class SiloStartup
{
    static SiloStartup()
    {
        Nodes = CreateNodes();
    }

    public static IEnumerable<SiloNode> Nodes { get; private set; }

    static IEnumerable<SiloNode> CreateNodes()
    {
        var list = new List<SiloNode>();
        // Add some nodes to the list - it will always contain nodes.
        // Nodes are added manually - list.Add(new SiloNode(...));
        SiloNode t1, t2;

        t1 = new SiloNode("t1", "Top level 1");

        t2 = new SiloNode("t2-1", "Secondary level 1");
        t2.AddQuery("1001 - 1");
        t2.AddQuery("1001 - 1");
        t2.AddQuery("1001 - 3");
        t1.AddChild(t2);

        t2 = new SiloNode("t2-2", "Secondary level 2");
        t2.AddQuery("1002 - 1");
        t2.AddQuery("1002 - 2");
        t2.AddQuery("1002 - 3");
        t1.AddChild(t2);

        t2 = new SiloNode("t2-3", "Secondary level 3");
        t2.AddQuery("1003 - 1");
        t2.AddQuery("1003 - 2");
        t2.AddQuery("1003 - 3");
        t1.AddChild(t2);

        list.Add(t1);

        return list;
    }
}

Это было моим пониманием того, что как только я сделаю ссылку на статический класс, конструктор запустит и обработает код внутри. В этом случае создается список узлов. Поэтому, когда я запрашиваю Узлы в первый раз, я ожидаю, что список будет готов к использованию.

Однако я обнаружил, что в некоторых случаях Узлы не содержат узлов - список, по-видимому, не удалось правильно инициализировать. На данный момент, похоже, прошло много времени, например, тайм-аут, но я не уверен.

Список строится через серию операторов list.Add (), поэтому нет базы данных или какого-либо другого источника данных для рассмотрения.

Я неправильно понимаю, как работает статика? Если да, есть ли лучший шаблон, который я мог бы использовать, чтобы этот список всегда был доступен по команде?

Любой совет приветствуется.

Одна часть информации, которую нужно добавить, это то, что она находится в разработке, а не в реальном времени. Visual Studio 2017, поэтому не могу полностью исключить любую нечестную игру здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...