Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
У меня есть отдельное приложение 'средства запуска', которое проверяет на обновления через веб-сервис. Если существуют обновления, это загружает их и затем выполняет мое приложение, которое находится в отдельном блоке.
другие альтернативы используют вещи как ClickOnce, или загружают файлы на отдельную область и перезапускают приложение, как кто-то еще упомянул.
быть предупрежденным о ClickOnce, хотя - это не столь гибко, как это звучит. И если Вы развертываетесь к системе, которая требует, чтобы подъем Вашей программы к более высокому уровню безопасности работал, Вы могли бы столкнуться с проблемами, если у Вас нет сертификата для Вашего приложения установленным. Я нашел очень трудным получить прямые ответы в Интернете к вещам как управление сертификатом когда дело доходит до ClickOnce. Если у Вас есть сложное приложение, можно хотеть только к самокрутке updater, который является тем, что я закончил тем, что имел необходимость сделать.
Обычно Вы загружали бы новые файлы в отдельную область. Затем завершение работы и перезапуск и при запуске Вы ищете и используете новые файлы, если найдено. Всегда сохраняя последнюю известную рабочую версию на стороне так, чтобы пользователь мог вернуться к чему-то, что определенно работает, если загрузка вызывает проблемы.
ClickOnce является хорошей технологией от Microsoft, которая делает это для Вас, и можно использовать его непосредственно из Visual Studio 2008.
Если Вы публикуете через ClickOnce, все это имеет тенденцию быть обработанным для Вас. Это имеет свое собственное за и против, но обычно легче, чем попытка кодировать все это самостоятельно.
И Википедия и 15 секунд имеют достойную информацию об использовании ClickOnce, как это работает, и т.д.
, Как другие заявили, ClickOnce не так гибок как прокрутка Вашего собственного решения, но это НАМНОГО менее сложно. Это имеет небольшую кривую обучения сначала, но с в значительной степени всем связанным в Visual Studio и использование Мастеров, обычно не занимает много времени спотыкаться на рабочее решение.
, Поскольку развертывание становится более сложным (т.е. вне, чем просто наличие предпосылок или кода приложения, для которого нужно обновление), и необходимо сделать большую постустановку или предварительно установить задачи, существуют вещи как WiX, которые дают Вам своего рода гибридное решение между Windows Installer и ClickOnce со стоимостью гибкости, являющейся намного более крутой кривой обучения.
единственная причина я стараюсь избегать пользовательских установщиков, то, что Вы заканчиваете тем, что провели слишком много времени, пытаясь заставить ее просто право обрабатывать набор различных "Что Если" сценарии...
Вам нужно будет закрыть приложение и перезапустить его, как уже прокомментировали другие люди.
Я написал код с открытым исходным кодом, чтобы сделать это в прозрачном режиме, включая приложение внешнего обновления для фактического холодного обновления. См. http://www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/
Код находится по адресу http: // github. com / synhershko / NAppUpdate (под лицензией Apache 2.0)