Я хочу, чтобы моя служба Windows C# автоматически обновила себя

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
31
задан Community 23 May 2017 в 12:26
поделиться

5 ответов

Единственный способ разгрузить типы состоит в том, чтобы уничтожить appdomain. Чтобы сделать это потребовало бы разделения Вашего слоя хостинга от Вашего служебного кода выполнения - это довольно сложно. (вид подобной минимально инвазивной операции выполнения)

май быть легче к любому a) выполнять пакетную задачу или b) штатному обнаруживают обновления, тогда запускают отдельный процесс, который останавливает сервис, обновляет блоки, и т.д. тогда перезапускает его.

, Если Вы интересуетесь первым, шаблоны MSDN и народ методов записали приложение updater блок, который Вы адаптируете к своему сервису.

https://web.archive.org/web/20080506103749/http://msdn.microsoft.com/en-us/library/ms978574.aspx

16
ответ дан Jesse Hufstetler 27 November 2019 в 22:49
поделиться

Я не знаю ни о каких Платформах, которые упрощают решения этой определенной проблемы.

, Что Вы могли попробовать, хотя разделяет бизнес-логику сервиса от кода практической эксплуатации в различные блоки. Имейте сервисную проверку блока на обновления блока бизнес-логики равномерно, скопируйте его с удаленного источника при необходимости, разгрузите старый блок BL (и возможно удалите), и затем динамично загрузите новую версию (разгрузка старого блока не является тривиальной задачей).

3
ответ дан ilitirit 27 November 2019 в 22:49
поделиться

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

Seperating слой бизнес-логики был бы хорошим вариантом. Вы могли также переписать основной сервис работать при отражении ведущим устройством или контрольной службой. Это подобно разделению бизнес-логики, и это просто потребовало бы остановки потока и запуска его снова.

я не знаю ни о какой известной платформе, которая делает это. Я сделал это сам, но это не общедоступная платформа.

2
ответ дан David Basarab 27 November 2019 в 22:49
поделиться

В случае, если кто-либо еще ищет это; я нашел эту ссылку интересной. Я не реализовал это решение, но похоже, что это могло бы работать на меня

http://www.eggheadcafe.com/articles/20041204.asp

1
ответ дан gillonba 27 November 2019 в 22:49
поделиться

Вы могли разъяснить свой вопрос немного? Я немного смущен, потому что, насколько я знаю, можно всегда перезаписывать DLLs сервисное использование. Копия и перезапуск сервиса могут легко быть сделаны частью Вас процессом сборки.

-2
ответ дан Esteban Araya 27 November 2019 в 22:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: