Стоит задача : при инициализации выполняется заполнение ObservableCollection
данными, где имеется трудоемкий метод.
private void AddToCollection()
{
Music.Add(new SongModel
{
Title = Tag.Title ,
Artis = Tag.Artist
ShadowColor = au.GetShadowColor(bm),
});
}
где au.GetShadowColor(bm) метод который долго обрабатывается.
Вызываю его в
public PageViewModel()
{
AddToCollection();
}
Пытаясь найти решение понял что данный метод лучше не вызывать в конструкторе. Тогда как и где его вызвать?
Дальше вопрос как заполнять ObservableCollection
так, чтобы не блокировать Ui и не ждать пока закончится заполнение чтобы отобразить окно программы?
UPDATE: Действительно была проблема в GetShadowColor. Поля нужно инициализировать именно в самом методе, а не в классе. Так как иначе при вызове метода несколько раз асинхронно, методы будут обращаться одновременно к одним и тем же полям, что впоследствии создает исключения.
Может так:
private async Task AddToCollection()
{
Music.Add(new SongModel
{
Title = Tag.Title ,
Artis = Tag.Artist
ShadowColor = await Task.Run(()=> au.GetShadowColor(bm)),
});
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Заранее прошу прощения за невнятный заголовок, не придумал как лучше объяснить
При попытке запуска какой-либо программы через VS выдает такую ошибкуРаньше этого не было, но после обновления ОС на Mac'е началось
Обясните значение каждых скобок при объявлении массива массивов,ведь я понимаю только значение [3],что значит что длина массива - 3А вот почему...