我正在运行服务吗

我正在运行服务吗,第1张

我正在运行服务

像Ash一样,我将所有实际的处理代码编写在单独的类库程序集中,然后由Windows Service可执行文件以及控制台应用程序引用。

但是,有时候了解类库是否在服务可执行文件或控制台应用程序的上下文中运行很有用。我这样做的方法是反思托管应用程序的基类。(对VB表示抱歉,但是我认为可以很容易地对C#进行以下修饰):

Public Class ExecutionContext    ''' <summary>    ''' Gets a value indicating whether the application is a windows service.    ''' </summary>    ''' <value>    ''' <c>true</c> if this instance is service; otherwise, <c>false</c>.    ''' </value>    Public Shared Readonly Property IsService() As Boolean        Get ' Determining whether or not the host application is a service is ' an expensive operation (it uses reflection), so we cache the ' result of the first call to this method so that we don't have to ' recalculate it every call. ' If we have not already determined whether or not the application ' is running as a service... If IsNothing(_isService) Then     ' Get details of the host assembly.     Dim entryAssembly As Reflection.Assembly = Reflection.Assembly.GetEntryAssembly     ' Get the method that was called to enter the host assembly.     Dim entryPoint As System.Reflection.MethodInfo = entryAssembly.EntryPoint     ' If the base type of the host assembly inherits from the     ' "Servicebase" class, it must be a windows service. We store     ' the result ready for the next caller of this method.     _isService = (entryPoint.ReflectedType.baseType.FullName = "System.ServiceProcess.Servicebase") End If ' Return the cached result. Return CBool(_isService)        End Get    End Property    Private Shared _isService As Nullable(Of Boolean) = Nothing#End RegionEnd Class


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5567288.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存