gpt4 book ai didi

c# - 创建组合命令行/Windows 服务应用

转载 作者:可可西里 更新时间:2023-11-01 08:04:20 25 4
gpt4 key购买 nike

在 C# 中设置实用程序的最佳方法是什么,该实用程序可以从命令行运行并产生一些输出(或写入文件),但也可以作为 Windows 服务运行以完成其工作在后台(例如监视目录或其他)。

我想编写一次代码,然后能够从 PowerShell 或其他一些 CLI 以交互方式调用它,但同时也想办法安装与 Windows 服务相同的 EXE 文件并让它在无人值守的情况下运行.

我可以这样做吗?如果是这样:我该怎么做?

最佳答案

是的,你可以。

一种方法是使用命令行参数,比如“/console”,来区分控制台版本和作为服务运行的版本:

  • 创建一个 Windows 控制台应用程序,然后
  • 在 Program.cs 中,更准确地说是在 Main 函数中,您可以测试“/console”参数是否存在
  • 如果有“/console”,则正常启动程序
  • 如果参数不存在,则从 ServiceBase 调用您的服务类


// Class that represents the Service version of your app
public class serviceSample : ServiceBase
{
protected override void OnStart(string[] args)
{
// Run the service version here
// NOTE: If you're task is long running as is with most
// services you should be invoking it on Worker Thread
// !!! don't take too long in this function !!!
base.OnStart(args);
}
protected override void OnStop()
{
// stop service code goes here
base.OnStop();
}
}

...

然后在 Program.cs 中:


static class Program
{
// The main entry point for the application.
static void Main(string[] args)
{
ServiceBase[] ServicesToRun;<p></p>

<pre><code> if ((args.Length > 0) && (args[0] == "/console"))
{
// Run the console version here
}
else
{
ServicesToRun = new ServiceBase[] { new serviceSample () };
ServiceBase.Run(ServicesToRun);
}
}
</code></pre>

<p>}
</p>

关于c# - 创建组合命令行/Windows 服务应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/809082/

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