c# MAUI 中的重复(inifinte)任务

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

这是关于 .Net6 和 MAUI 的

我确实有一个 List<> items。在不定式循环中,每隔 x 秒我会发送一个带有 *item *as key 的请求。 收到消息后,我想刷新页面的内容。 该页面是正常的ContentPage

我仍在学习,所以我不想知道更好的解决方案可能是什么(除非我认为不可能)。

除了我的

MainPage.xaml.cs

中的这些方法之外,我目前没有太多东西
public partial class MainPage : ContentPage
{
    int count = 0;
    string previousitem = "";

    Caps cap = new Caps(@"c:\tmp\xmldata.xml");

    public MainPage()
    {
        InitializeComponent();
        

        // Methods also in Class MainPage  
        GetNextItem(cap.ReturnListOfItems());
        FillMaui();
    }

嗯,我用任务、自动重置事件、时间跨度和计时器尝试了很多东西,以至于我不再有任何运行代码。好吧,除了上面的代码...

我现在真的很困惑,希望得到一些提示。

GetNextItem() 循环遍历所有项目,到达列表末尾时从头开始,甚至处理更改的项目列表。

FillMaui() 只是更改 MainPage.xaml 中元素的属性,例如:

this.ItemName.Text = this.previousitem;

那么,如何在不阻塞我的应用程序的情况下启动这个不定式循环?

c# timer task .net-6.0 maui
3个回答
0
投票

您可以使用计时器并在您定义的时间段内触发刷新代码一次,而不是让它连续运行,这会阻止您的应用程序。


0
投票

第一种方法,您可以使用

RefreshView
提供刷新命令。 RefreshView 是一个容器控件,为可滚动内容提供拉动刷新功能。但 RefreshView 的子级必须是可滚动控件,例如 ScrollView、CollectionView 或 ListView。

第二种方法,可以使用MVVM的方式让List自动改变item。我更喜欢您使用

ObservableCollection<T>
而不是使用列表 您可以检查 从数据绑定到 MVVM


0
投票

我不允许发表评论,所以我只是将其作为答案发布 - @timanderson 您是否在作为单例添加的视图中引用 System.Threading.Timer?

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