Задать вопрос
@INTERNALINTERFERENCE

Как добавлять элементы в коллекцию раз в секунду?

У меня есть коллекция:
public ViewModelCollection<ReceivedApplicationMessageViewModel> ReceivedApplicationMessages { get; } = new ();

В нее постоянно добавляются элементы из-за чего ui перегружается.
Я добавил еще одну коллекцию:
public ViewModelCollection<ReceivedApplicationMessageViewModel> ReceivedApplicationMessagesChunk { get; } = new();


План такой: постоянно добавлять элементы в ReceivedApplicationMessagesChunk, но каждую секунду выбрасывать все в ReceivedApplicationMessages и очищать чанк коллекцию. Как это все реализовать?
Вот, что у меня пока есть:
public ViewModelCollection<ReceivedApplicationMessageViewModel> ReceivedApplicationMessages { get; } = new ();      
                                                                                                                    
public ViewModelCollection<ReceivedApplicationMessageViewModel> ReceivedApplicationMessagesChunk { get; } = new();  
public Task HandleApplicationMessageReceivedAsync( MqttApplicationMessageReceivedEventArgs eventArgs )              
{                                                                                                                   
    return Dispatcher.UIThread.InvokeAsync( () =>                                                                   
    {                                                                                                                                                  
        ChunkMessages( eventArgs.ApplicationMessage );                                                                                                                                                                                         
    } );                                                                                                             
}                                                                                                                   
                                                                                                                    
private void ChunkMessages( MqttApplicationMessage applicationMessage )                           
{                                                                                                 
    ReceivedApplicationMessagesChunk.Insert( 0, new ReceivedApplicationMessageViewModel(          
        _messageId++,                                                                             
        applicationMessage ) );                                                                   
                                                                                                  
    ReceivedApplicationMessages.AddRange( ReceivedApplicationMessagesChunk );                     
    ReceivedApplicationMessagesChunk.Clear();                                                     
}
  • Вопрос задан
  • 47 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@oleg_ods
Можно попробовать через таймер реализовать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы