如何取消或重新启动Task继承List并等待?

时间:2019-04-21 16:47:02

标签: c# async-await

我使用异步方法来调用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 个答案:

答案 0 :(得分:0)

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

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

您还应该将Task.RunTask.Factory.StartNew一起使用async-await