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

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

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

2 ответа

Решение

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

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

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

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

private MyForm() {

}

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

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

Другие вопросы по тегам