如何检测我是否在单一服务中运行?

时间:2012-01-30 14:05:37

标签: c# linux mono mono-service

如何检测我在mono-service2下运行? (在C#/。NET 3.5中,在ubuntu 11上运行mono 2.6.7)

Type.GetType("Mono.Runtime")告诉我我在单声道中运行,所以这部分还可以。但Environment.UserInteractive在单声道下似乎总是假的,所以我很难弄清楚我是否真的在mono-service2下运行 - 没有控制台/终端。

2 个答案:

答案 0 :(得分:5)

Environment.UserInteractive是正确的解决方案,但不幸的是,目前尚未在Mono中实现。我有一天可能会看一下并升级这个答案;)

然而,为了检测你,你可以使用hacky解决方案:mono-service参数中m的名称将成为该服务的应用程序域的友好名称(至少根据{ mono-service的{​​3}}。因此,使用此参数运行时,您应该能够测试:

AppDomain.CurrentDomain.FriendlyName == "NameGivenToMParameter"

如果确实如此,那么您的应用程序显然是使用单一服务运行(使用给定参数)。将应用程序域名的值打印到文件以查看它是否真的有效(它适用于我);)我不知道它是否真的可以解决您的问题。

答案 1 :(得分:0)

if (Environment.OSVersion.Platform.Equals(PlatformID.Unix)) 
{
}