Высокая память процесса при использовании графиков Syncfusion в UWP во время заставки / отключения экрана - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть небольшое приложение UWP, которое считывает данные в режиме реального времени и отображает их в Syncfusion (v17.3460.0.14) SfChart. Казалось, все работает нормально, но я оставил его на ночь, а утром он использовал более 8 ГБ памяти (и был заморожен)! При отладке кажется, что, когда запускается заставка, и, вероятно, когда экран переходит в режим сна, память процесса начинает медленно увеличиваться, достигая ГБ за несколько часов;когда экранная заставка закрывается, использование памяти возвращается к нормальному ожидаемому уровню (процесс 120 МБ / куча 80 МБ). Если я оставлю его включенным во время использования компьютера, проблем не будет.

Я сократил код до небольшого примера. Обычно данные поступают из веб-API. Удаление привязки данных из свойства ItemsSource в FastLineSeries приводит к исчезновению проблемы.

public class DataPoint
{
    public DateTime Timestamp { get; set; }
    public long? AttainableRate { get; set; }
}

private readonly DispatcherTimer _timer = new DispatcherTimer();

public ObservableCollection<DataPoint> Data { get; }
    = new ObservableCollection<DataPoint>();

public GraphPage()
{
    this.InitializeComponent();
    _timer.Interval = TimeSpan.FromSeconds(1);
    _timer.Tick += this.Timer_Tick;
    _timer.Start();
}

private async void Timer_Tick(object sender, object e)
{
    var now = DateTime.Now;
    var ran = new Random();
    Data.Add(new DataPoint
    {
        Timestamp = now,
        AttainableRate = ran.Next(8000, 10000),
    });
}
<sf:SfChart>
    <sf:SfChart.PrimaryAxis>
        <sf:DateTimeAxis RangePadding="Additional" Interval="10" IntervalType="Minutes" SmallTicksPerInterval="10" />
    </sf:SfChart.PrimaryAxis>
    <sf:SfChart.SecondaryAxis>
        <sf:NumericalAxis Header="Bandwidth (Kbps)" Minimum="0" Maximum="11000" Interval="1000" />
    </sf:SfChart.SecondaryAxis>
    <sf:FastLineSeries Label=" Max. Attainable Rate (Kbps)"
        ItemsSource="{x:Bind Data}" XBindingPath="Timestamp" 
        YBindingPath="AttainableRate"/>
</sf:SfChart>

Вот краткий пример снимок экрана . На данный момент приложение работает около 30 минут, и заставка включена. Непосредственно перед подъемом (и первым снимком), когда заставка была отключена.

Итак, это проблема с моим кодом или ошибка в Syncfusion или какой-то другой причудливой точке / UWP?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...