В настоящее время у меня есть сборка, используемая для приложения с пользовательским интерфейсом Windows, в котором много встроенной логики, и в случае ошибок он показывает сообщения пользователю с помощью метода ShowError (), который внутренне использует Messagebox.Show (..), а затем записывать ошибки в файл журнала / базу данных.
А вот и моя проблема. Я хочу использовать ту же сборку для службы Windows. Но когда я использую эту сборку в службе Windows, она будет аварийно завершена в Messagebox.show (..), поскольку служба Windows не разрешает взаимодействие с пользовательским интерфейсом в обычном режиме (я знаю параметр «Разрешить службе взаимодействовать с рабочим столом», но это не так. вариант для меня).
Так что я хочу сделать что-то вроде этого.
if(!IsWindowsService())
MessageBox.Show("Message");
Logger.Log("Message");
Здесь IsWindowsService () должен возвращать true, если сборка используется службой Windows, и false, если используется приложением Windows.
Есть идеи, как это получить?