Как определить, что я работаю в моно-сервисе?
Как я могу определить, что я работаю под mono-service2? (в C#/.NET 3.5, запуск моно 2.6.7 в Ubuntu 11)
Type.GetType("Mono.Runtime")
говорит мне, что я бегу в моно, так что эта часть в порядке. Но Environment.UserInteractive
Кажется, всегда ложно в моно, поэтому я пытаюсь выяснить, действительно ли я работаю под моно-сервисом 2 - без консоли / терминала.
2 ответа
Environment.UserInteractive
является правильным решением, но, к сожалению, в настоящее время оно не реализовано в Mono. Я могу когда-нибудь взглянуть на это и обновить этот ответ;)
Однако, просто чтобы обнаружить, вы можете использовать хакерское решение вокруг этого: имя, данное mono-service
в m
параметр станет понятным именем домена приложения этой службы (по крайней мере, в соответствии с текущим исходным кодом mono-service
). Таким образом, при запуске с этим параметром вы сможете проверить:
AppDomain.CurrentDomain.FriendlyName == "NameGivenToMParameter"
Если это правда, то ваше приложение, очевидно, запускается с моно-сервисом (с заданным параметром). Выведите значение имени домена приложения в файл, чтобы увидеть, действительно ли оно работает (оно работает для меня);) Я не знаю, действительно ли это решает вашу проблему.
if (Environment.OSVersion.Platform.Equals(PlatformID.Unix))
{
}