Ограничение количества выигрышных форм в C # - PullRequest
2 голосов
/ 31 августа 2011

Я пишу приложение WinForms, и пока оно содержит 37 форм.Это из-за потребностей моего проекта.

Мои вопросы:

  1. Есть ли ограничение на количество форм, созданных в C #?
  2. Есть ли у негоВлияние на производительность приложения?

Спасибо за вашу помощь.

Ответы [ 4 ]

8 голосов
/ 31 августа 2011

Есть ли ограничение в создании форм в C #?

AFAIK, нет таких ограничений, налагаемых .NET Framework. Очевидно, что чем больше форм вы создаете и храните в памяти, тем меньше памяти у вас будет, пока вы не исчерпаете их. И чем меньше у вас памяти, тем ниже производительность.

С другой стороны, если вы сохраняете в памяти только текущую форму и оставляете GC заботиться о других, оставляя их экземпляры вне области видимости, таких проблем не будет.

3 голосов
/ 31 августа 2011

Количество форм не ограничено до тех пор, пока у вас не закончится баран.Это повлияет как на производительность системы, так и на приложения.

0 голосов
/ 31 августа 2011

У меня был проект со слишком большим количеством winforms (приблизительно 50).После 2 или 3 отладочных сборок и запусков я использовал следующую ошибку:

Error 1   Unexpected error writing metadata to file

'E: \ Repository \ Project \ JewelSoft \ PresentationTier \ obj \ Release \ PresentationTier.exe' - 'Недостаточно памяти для выполнения этой операции.'PresentationTier

Поэтому будьте внимательны и всегда реализуйте GC там, где это необходимо.

Обновление 1: Хотя существуют такие методы, как GC.Collect (), вы нечасто требуют его реализации, если только у вас нет случаев, когда ваш код внезапно заканчивается или переключает потоки.Такие вещи, как удаление форм, которые не требуются после закрытия и избегания повторяющихся объявлений объекта, будут полезны.

Обновление 2: Чтобы узнать больше, когда следует писать GC.Collect, обратитесь к этимссылки:

  1. GC.Collect ()

  2. Когда звонить в GC.Collect

  3. Когда допустимо вызывать GC.Collect?

А по поводу распоряжения формой, по методу закрытия формы это будетавтоматически удаляется, но если у вас есть переменная для этой формы в какой-либо другой форме, то желательно написать form1 = null; в form1_disposed событие

0 голосов
/ 31 августа 2011

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

С уважением.

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