首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么StopAsync在停止IHost时两次被调用?

为什么StopAsync在停止IHost时两次被调用?
EN

Stack Overflow用户
提问于 2022-08-24 08:24:54
回答 1查看 44关注 0票数 0

我正在使用Discord.Net和Discord.Addons.Hosting软件包开发一个不和谐的机器人。由于某种原因,当我调用IHost.StopAsync()方法时,我的IHostedServices中的所有StopAsync方法都会被调用两次。

下面是其中一个StopAsync方法:

代码语言:javascript
复制
public override Task StopAsync(CancellationToken stoppingToken) 
{
    Logger.LogInformation("Client [{clientId}] is stopped.", Client.CurrentUser.Id);
    
    return base.StopAsync(stoppingToken);
}

我使用命令关闭我的机器人!关闭:

代码语言:javascript
复制
[Command("shutdown")]
[RequireUserPermission(GuildPermission.Administrator, Group = "Permission")]
[RequireOwner(Group = "Permission")]
public async Task Stop() 
{
    await _host.StopAsync();
}

以下是我试图关闭机器人时的日志:

代码语言:javascript
复制
[11:08:41 INF] Application is shutting down...
[11:08:46 INF] Client [1007213990742610001] is stopped.
[11:08:46 INF] Client [1007213990742610001] is stopped.
[11:08:46 INF] Discord.NET hosted service is stopping
[11:08:46 INF] Discord.NET hosted service is stopping
[11:08:46 INF] Gateway: Disconnecting
EN

回答 1

Stack Overflow用户

发布于 2022-08-24 15:05:48

RunAsync itself calls StopAsync。如果要从主机内部停止主机,请调用IHostApplicationLifetime.StopApplication()而不是IHost.StopAsync()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73469803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档