Для ребенка, я пошел бы с Alice.
Вот другое голосование за Alice. У моих 4 детей была тонна забавы, работающей с ним и изучающей фундаментальные понятия программирования. Конечно, им это - все о социализации с феями и людоедами, но heck проклятая унаследованная система, я продолжаю работать, мог использовать некоторый faries и людоедов также.
В коде, который создает дескриптор ожидания для службы Windows, в случае сбоя (как в случае отказа в доступе) вы можете попытаться «открыть существующий дескриптор ожидания» через
EventWaitHandle.OpenExisting(
@"Global\OurCompany.OurProduct.MyClass.EventWaitHandle",
EventWaitHandleRights.Synchronize | EventWaitHandleRights.Modify);
. Я не совсем уверен, что на этом этапе поведение останется прежним.
Примечание: Буду признателен за обратную связь. Это потенциальный ответ, поэтому я отвечаю на свой вопрос, и снова я приветствую множество комментариев!
Примечание 2: Удивительно, но применение EventWaitHandleRights.FullControl
вместо вышеуказанных флагов ( Synchronize
+ Изменить
) не работает. Вы должны использовать пример выше.
MSDN говорит:
UnauthorizedAccessException - указанное событие существует и имеет безопасность управления доступом, но у пользователя нет EventWaitHandleRights.FullControl.
и
Вызывающий имеет полный контроль над вновь созданным объектом EventWaitHandle, даже если eventSecurity отрицает или не может предоставить некоторые права доступа текущему пользователю.
У вашей службы нет прав на получение существующего события через конструктор EventWaitHandle. (EventWaitHandleRights.FullControl не указан. И ваше именованное событие существует, пока для него открыты дескрипторы.) Вы можете открыть существующее событие, используя EventWaitHandle.OpenExisting.