gpt4 book ai didi

c# - .NET 控制台应用程序作为 Windows 服务

转载 作者:IT王子 更新时间:2023-10-29 03:32:50 42 4
gpt4 key购买 nike

我有控制台应用程序并想将其作为 Windows 服务运行。 VS2010 具有允许附加控制台项目和构建 Windows 服务的项目模板。我不想添加单独的服务项目,如果可能的话,将服务代码集成到控制台应用程序中,以使控制台应用程序保持为一个项目,该项目可以作为控制台应用程序运行,或者如果使用开关从命令行运行,则作为 Windows 服务运行。

也许有人可以建议可以快速轻松地将 C# 控制台应用程序转换为服务的类库或代码片段?

最佳答案

我通常使用以下技术来运行与控制台应用程序或服务相同的应用程序:

using System.ServiceProcess

public static class Program
{
#region Nested classes to support running as service
public const string ServiceName = "MyService";

public class Service : ServiceBase
{
public Service()
{
ServiceName = Program.ServiceName;
}

protected override void OnStart(string[] args)
{
Program.Start(args);
}

protected override void OnStop()
{
Program.Stop();
}
}
#endregion

static void Main(string[] args)
{
if (!Environment.UserInteractive)
// running as service
using (var service = new Service())
ServiceBase.Run(service);
else
{
// running as console app
Start(args);

Console.WriteLine("Press any key to stop...");
Console.ReadKey(true);

Stop();
}
}

private static void Start(string[] args)
{
// onstart code here
}

private static void Stop()
{
// onstop code here
}
}

Environment.UserInteractive 通常对控制台应用程序为真,对服务为假。从技术上讲,可以在用户交互模式下运行服务,因此您可以改为检查命令行开关。

关于c# - .NET 控制台应用程序作为 Windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7764088/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com