Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to detect if I'm running in mono-service?

How can I detect I'm running under mono-service2? (in C#/.NET 3.5, running mono 2.6.7 on ubuntu 11)

Type.GetType("Mono.Runtime") tells me I'm running in mono, so that part is ok. But Environment.UserInteractive is always false under mono it seems, so I'm struggling to figure out if I'm actually running under mono-service2 - with no console/terminal.

like image 826
BaBu Avatar asked Jan 30 '12 14:01

BaBu


Video Answer


1 Answers

Environment.UserInteractive is the proper solution but, unfortunately, it is currently not implemented in Mono. I may take a look on it someday and upgrade this answer ;)

However just to detect you can probably use hacky solution around this one: name given to mono-service in m parameter will become the friendly name of application domain of that service (at least according to the current source code of mono-service). So, when run with this parameter you should be able to test:

AppDomain.CurrentDomain.FriendlyName == "NameGivenToMParameter"

If it is true, then your application is apparently ran with mono-service (with given parameter). Print the value of application domain name to file to see if it really works (it does for me) ;) I do not know if it really resolves your problem.

like image 138
konrad.kruczynski Avatar answered Sep 28 '22 03:09

konrad.kruczynski