2014-05-20 1 views
1

Итак, я некоторое время просматривал эту тему о том, что является лучшим способом сделать это. Я работаю с сканирующим оружием и создаю приложение для одного. Мое приложение имеет множество различных экранов меню, как вы можете видеть на картинке. Form Layout Мое приложение, похоже, замерзает на одном сканирующем пистолете, но не в другом, хотя у них почти такое же оборудование. Я подумал, что, возможно, это потому, что я не закрываю ни одну из моих форм после создания. Я создаю экземпляр внутри формы при вызове, а затем вызываю метод show.Открытие и закрытие многообразного приложения компактный каркас

AssetsMenu.GetInstance(). Show();

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

это.Скрыть();

Я собираюсь сделать это неправильно или является наилучшим способом повторного использования форм. Должен ли я использовать AssetsMenu.GetInstance(). Закройте() вместо этого и просто создайте новую форму, когда мне нужно будет использовать это снова?

Пожалуйста, помогите ...

ответ

1

Это вопрос памяти. Должны ли вы их закрыть? Если у вас недостаточно памяти для их одновременного хранения, тогда да. Обычно я запускаю «службу памяти» во всех моих приложениях, которые выводят в условия отладочной памяти, особенно когда они становятся критическими. Я бы предложил сделать что-то подобное и посмотреть на загрузку памяти устройства. Откройте все формы и посмотрите, где он находится. Если вы действительно высоки (например, 95% +), то у вас наверняка возникнет проблема.

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

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

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

0

У меня была такая же проблема с моим приложением CF 4.5. Вместо использования нескольких форм у меня есть только одна форма и несколько невидимых «панелей» друг над другом (их можно найти в панели инструментов VS). В начале приложения отображается только панель «LogIn» (и, следовательно, ее элементы управления). После того, как пользователь нажимает кнопку «Вход в систему» ​​и проверяется, я устанавливаю эту панель на невидимую, а следующую на видимую и так далее.

Я не считаю это самым эффективным способом, но это решило мою проблему ..

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

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