none
Remplir une ObservableCollection en asynchrone RRS feed

  • Question

  • Bonjour,

    Je patauge pour ajouter des item dans une ObservableCollection de manière asynchrone. Via différent tuto j'ai un petit bout de code qui fonctionne mais pour un seul item et cela me paraît quelque peut "pourquoi faire compliqué alors que...."

    using System;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.Threading.Tasks;
    
    namespace Application1
    {
        public class FeedItem
        {
            public int ID { get; set; }
            public string Name { get; set; }
            public int Type { get; set; }
        }
    
        public class FeedDataSource
        {
            private ObservableCollection<FeedItem> _Figures = new ObservableCollection<FeedItem>();
            public ObservableCollection<FeedItem> Figures
            {
                get
                {
                    return this._Figures;
                }
            }
    
            public async Task GetFeedsAsync()
            {
                //Task<FeedItem> feed2 = new Task<FeedItem>(new FeedItem() { ID = 1 });
                this.Figures.Add(await GetFeedAsync());
    
                // this.Figures.Add(await new Task<FeedItem() { ID = 1, Name = "Nom1", Type = 1 }>);
    
                //this.Figures.Add(await feed1);
            }
    
            private async Task<FeedItem> GetFeedAsync()
            {
                FeedItem fg = new FeedItem();
                    fg.ID = 1;
                    fg.Name = "Nom1";
                    fg.Type = 1;
                return fg;
            }
        }
    }
    

    Au Niveau de la méthode GetFeedsAsync() ce qui est en "commentaire" c'est des essais qui ne fonctionne pas. Je ne pige pas du tout Task<> mais c'est un code qui fonctionne or j'ai pas qu'un FeedItem à ajouter.

    Quelqu'un peut m'éclairer sur ça ?

    christophe

    dimanche 15 avril 2012 12:41

Réponses

  • En fait tu ne demandes qu'un seul élément, donc c'est normal !

    Ton code là, n'a pas besoin d'être asynchrone car il n'y a pas de facteur bloquant (comme une requête web par exemple)

    Imaginons que GetFeedAsync soit vraiment asynchrone, ce qu'il te manque c'est une boucle 


    { for(int i=0;i<MAX,i++)

    this.Figures.Add(await GetFeedAsync()); }


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue

    lundi 16 avril 2012 11:17
    Modérateur