У меня есть коллекция:
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();
}