2016-02-05 3 views
0

Я пытаюсь реализовать что-то, чтобы создать экземпляр объекта несколько раз. Следующий код предназначен для создания html-прослушивателя и его оживления до конца процесса. Поэтому в принципе я не хочу записывать 10 раз, скорее найду способ автоматически создать его 10 раз.Создайте несколько экземпляров объекта C#

Я пробовал это, но слушатели, похоже, не работают.

public static void MultipleProxy() 
{ 
    var proxies = new List<SocksWebProxy>(); 
    for (int i = 1; i <= 10; i++) 
    { 
     proxies.Add(Proxy(i)); 
    } 
} 

public static SocksWebProxy Proxy(int i) 
{ 
    var proxy = new SocksWebProxy(new ProxyConfig(IPAddress.Parse("127.0.0.1"), 7000 + i, IPAddress.Parse("127.0.0.1"), 9000 + i, ProxyConfig.SocksVersion.Five)); 
    return proxy; 
} 
+5

Что вы подразумеваете под "началом объекта"? –

ответ

4

Вы уже создали 10 экземпляров SocksWebProxy. Проблема с этим кодом заключается в том, что объекты выходят за рамки сразу же, как только метод создает их все выходы, оставляя их подходящими для сбора мусора. Чтобы решить эту проблему, вы можете перемещать список, например. к классу.

private static List<SocksWebProxy> proxies = new List<SocksWebProxy>(); 

public static void MultipleProxy() 
{ 
    for (int i = 1; i <= 10; i++) 
    { 
     proxies.Add(Proxy(i)); 
    } 
} 

Несколько вызовов MultipleProxy() будут продолжать добавлять в этот список этот проект.

+0

О, я вижу, я почти понял это! :) Спасибо Eric –

+0

Да. Это правильная идея. Вам просто нужно понять, что объекты без ссылки на них могут исчезнуть в любое время (сбор мусора). –

2

Вы создаете объекты и помещаете их в список, но список хранится в локальной переменной. По завершении метода список уничтожается, и объекты также уничтожаются сборщиком мусора. Храните их в переменной, которая живет все время.

+0

Спасибо Cecilio ваш тоже хороший ответ, но я могу принять только один –

Смежные вопросы