Есть ли способ не создавать экземпляр формы, когда он снова закрывается и открывается?
Я отлаживал простое приложение с тремя формами, и я понял, что когда я закрываю форму, а затем снова открываю (нажимая на кнопку, которая показывает соответствующую форму), объект, который представляет форму, создается снова. Я думаю, что это потребляет ресурсы без необходимости.
Итак, как я могу создать только один экземпляр всех форм для использования во время выполнения программы?
2 ответа
Вы должны иметь возможность подключиться к закрывающим событиям, и все, что вам нужно, это установить форму, которую вы закрываете на скрытую, вместо того, чтобы фактически закрывать ее. Затем форма будет доступна через Singleton, которая занимается инициализацией и отображением самой формы.
Обратите внимание, что вы все еще можете освободить любые другие ресурсы, используемые скрытой формой, такие как файлы и / или соединения.
В качестве примечания следует помнить, что хранение форм в памяти, когда вы их не используете, увеличит объем памяти вашего приложения.
То, что вы описываете, звучит как шаблон Singleton.
private MyForm() {
}
private static MyForm _instance;
public static MyForm Instance => _instance ?? (_instance = new MyForm());
Возможно, Дизайнер начинает возиться, потому что Конструктор является приватным. Кроме того, вы больше не можете удалять / закрывать формы. Это заставляет вас сделать форму невидимой, а не избавиться от них