如何取消或重启任务继承List并等待?

问题描述 投票:0回答:1

我使用异步方法调用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);
    }

谢谢=)

c# async-await
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.