为了账号安全,请及时绑定邮箱和手机立即绑定

如何取消或重启Task继承List和await?

如何取消或重启Task继承List和await?

C#
至尊宝的传说 2022-12-24 10:01:34
我使用异步方法调用 api 以获取条目列表并使用此数据填充列表框。我想每 120 秒调用一次这种异步方法。此时有必要取消或重启任务以防止内存泄漏吗?我不知道如何取消或重新开始我的任务。你有什么办法解决这个问题吗?这是我的方法:public async Task GetChatters()    {        List<TwitchLib.Api.Core.Models.Undocumented.Chatters.ChatterFormatted> chatters = await api.Undocumented.GetChattersAsync(channelName);        foreach (var chatter in chatters)        {            ListBoxViewerUpdate(chatter.Username);        }        await Task.Delay(TimeSpan.FromSeconds(viewerListUpdateTime));        Task.Factory.StartNew(GetChatters);    }谢谢 =)
查看完整描述

1 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

您无法取消“任务”,因为您的 API 不可取消。

一个任务本身不会导致那么多的内存泄漏。但是您的递归算法会导致内存泄漏,因为它将使编译器生成的那些任务和状态机保持活动状态。

您还应该使用Task.Run而不是Task.Factory.StartNewwith async-await


查看完整回答
反对 回复 2022-12-24
  • 1 回答
  • 0 关注
  • 59 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信