0

我想创建一个 Discord 机器人,DSharpPlus 和 Discord.Net 在他们的教程中都使用控制台应用程序。

我想知道这是否有任何原因,因为考虑到它,工作者服务应用程序似乎更适合,不是吗?我可以在方法中设置机器人,StartAsync如果需要,我可以在方法中处理所有东西StopAsync

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

也许机器人会在这个ExecuteAsync方法上挣扎?

public class Worker : BackgroundService
{
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            await Task.Delay(1000, stoppingToken);
        }
    }
}
4

1 回答 1

1

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

.NET 代码声明了跨平台支持,这意味着您可以将相同的源用于不同的目标平台。正因为如此,.NET 必须使用一种“服务”理念来处理长时间运行的后台事物,但没有绑定到特定平台。在 Linux 上,任何控制台应用程序都可以是“服务”应用程序(看看:https ://swimburger.net/blog/dotnet/how-to-run-a-dotnet-core-console-app-as-a-service -使用-systemd-on-linux)。在 Windows 上它有点不同,但仍然很简单(看看:https ://dotnetcoretutorials.com/2019/12/07/creating-windows-services-in-net-core-part-3-the-net -核心工人方式/

也许机器人会在 ExecuteAsync 方法上挣扎?

BackgroundService类被设计为任何“服务”的基类,所以,我认为,没有更好的扩展对象了:)

于 2021-02-27T22:25:43.533 回答