Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Единственный способ разгрузить типы состоит в том, чтобы уничтожить appdomain. Чтобы сделать это потребовало бы разделения Вашего слоя хостинга от Вашего служебного кода выполнения - это довольно сложно. (вид подобной минимально инвазивной операции выполнения)
май быть легче к любому a) выполнять пакетную задачу или b) штатному обнаруживают обновления, тогда запускают отдельный процесс, который останавливает сервис, обновляет блоки, и т.д. тогда перезапускает его.
, Если Вы интересуетесь первым, шаблоны MSDN и народ методов записали приложение updater блок, который Вы адаптируете к своему сервису.
https://web.archive.org/web/20080506103749/http://msdn.microsoft.com/en-us/library/ms978574.aspx
Я не знаю ни о каких Платформах, которые упрощают решения этой определенной проблемы.
, Что Вы могли попробовать, хотя разделяет бизнес-логику сервиса от кода практической эксплуатации в различные блоки. Имейте сервисную проверку блока на обновления блока бизнес-логики равномерно, скопируйте его с удаленного источника при необходимости, разгрузите старый блок BL (и возможно удалите), и затем динамично загрузите новую версию (разгрузка старого блока не является тривиальной задачей).
Другое возможное решение состоит в том, чтобы иметь отдельный сервис, который работает, останавливает другой, если существует обновление, и затем обновляет сервис. Вы не можете сделать, чтобы сервис обновил себя, потому что .dll, который работает, не остановится.
Seperating слой бизнес-логики был бы хорошим вариантом. Вы могли также переписать основной сервис работать при отражении ведущим устройством или контрольной службой. Это подобно разделению бизнес-логики, и это просто потребовало бы остановки потока и запуска его снова.
я не знаю ни о какой известной платформе, которая делает это. Я сделал это сам, но это не общедоступная платформа.
В случае, если кто-либо еще ищет это; я нашел эту ссылку интересной. Я не реализовал это решение, но похоже, что это могло бы работать на меня
Вы могли разъяснить свой вопрос немного? Я немного смущен, потому что, насколько я знаю, можно всегда перезаписывать DLLs сервисное использование. Копия и перезапуск сервиса могут легко быть сделаны частью Вас процессом сборки.