C# 在辅助服务而不是控制台应用程序中运行Discord bot?

C# 在辅助服务而不是控制台应用程序中运行Discord bot?,c#,discord,discord.net,dsharp+,C#,Discord,Discord.net,Dsharp+,我想创建一个Discord bot,DSharpPlus和Discord.Net都在教程中使用控制台应用程序 我想知道这是否有什么原因,因为当考虑它时,工人服务应用程序似乎更适合,不是吗?我可以在StartAsync方法中设置bot,如果需要,我可以在stopsync方法中处理所有内容 那么,有人知道为什么控制台应用程序更受欢迎吗?也许工人服务有我目前不知道的缺点 也许bot会与ExecuteAsync方法发生冲突 public class Worker : BackgroundService

我想创建一个Discord bot,DSharpPlus和Discord.Net都在教程中使用控制台应用程序

我想知道这是否有什么原因,因为当考虑它时,工人服务应用程序似乎更适合,不是吗?我可以在
StartAsync
方法中设置bot,如果需要,我可以在
stopsync
方法中处理所有内容

那么,有人知道为什么控制台应用程序更受欢迎吗?也许工人服务有我目前不知道的缺点

也许bot会与
ExecuteAsync
方法发生冲突

public class Worker : BackgroundService
{
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            await Task.Delay(1000, stoppingToken);
        }
    }
}
那么,有人知道为什么控制台应用程序更受欢迎吗?也许工人服务有我目前不知道的缺点

.NET代码声明了跨平台支持,这意味着您可以为不同的目标平台使用相同的源。正因为如此,.NET必须使用某种“服务”理念来处理长期运行的后台事务,但不绑定到特定的平台。在Linux上,任何控制台应用程序都可以是“服务”应用程序(看看:)。在Windows上有点不同,但仍然很简单(请看:

也许机器人会与ExecuteAsync方法发生冲突


BackgroundService
类被设计为任何“服务”的基类,因此,我认为没有更好的候选扩展:)

我认为示例中使用了控制台应用程序,因为Unix系统不像windows那样提供服务。我想您可以自由开发windows服务应用程序,并使用您提到的示例。请看一看:我的机器人作为Windows服务正常运行。托管应用程序类型实际上取决于开发人员的偏好。当我在进行故障排除时,我实际上是通过一个Windows窗体应用程序运行我的bot,并且想要一个UI。@IgorGoyda只是为了确保我们谈论的是相同的技术。我想创建一个.NET5工作者服务应用程序,并在我的Linux系统上使用它:)啊,我不知道Linux,很抱歉☹伙计们,如果你们想结束这个问题,为什么不至少发表评论呢?请告诉我这个问题出了什么问题我刚才在想这一行
wait Task.Delay(1000,stoppingToken)。我不确定机器人是否会“冻结”1秒@问题3R整个应用程序不会冻结,只有一个线程当前执行此方法。我建议考虑一个较小的时间,比如说大约100毫秒。