2016-06-17 11 views
1

Я отлаживал простое приложение, имеющее три формы, и я понял, что когда я закрываю форму, а затем снова открываю (нажав кнопку, которая отображает соответствующую форму), объект, который представляет форму, снова создается , Я думаю, что это потребляет ресурсы без необходимости.Есть ли способ не воссоздать экземпляр формы при закрытии и открытии снова?

Итак, Как создать только один экземпляр всех форм для использования во время выполнения программы?

ответ

4

Вы должны иметь возможность подключаться к закрывающим событиям, и все, что вам нужно, - это установить форму, которую вы закрываете, чтобы скрывать, а не закрывать ее. Затем форма была бы доступна через Singleton, который заботится об инициализации и рендеринге самой формы.

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

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

+0

Да, это точка, которую необходимо тщательно оценить в соответствии с требованиями. Благодарю. –

1

То, что вы описываете, звучит как шаблон Singleton.

private MyForm() { 

} 

private static MyForm _instance; 
public static MyForm Instance => _instance ?? (_instance = new MyForm()); 

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

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

  • Нет связанных вопросов^_^