У меня есть проект WPF с DataGrid. Я использую шаблон MVVM. Это часть моей виртуальной машины: Не удается заполнить datagrid в новой задаче
class LibraryViewModel
{
#region Members
//private SimpleLibDBEntities _database;
ObservableCollection<BooksViewModel> _books = new ObservableCollection<BooksViewModel>();
int count = 0;
int sizeOfdb = 1000000;
#endregion
public ObservableCollection<BooksViewModel> Books
{
get
{
return _books;
}
set
{
_books = value;
}
}
public LibraryViewModel()
{
Task task = Task.Factory.StartNew(Generator);
}
private void Generator()
{
for (count = 0; count < sizeOfdb; count++)
{
_books.Add(new BooksViewModel { Book = new BooksSet { Id = count, Title = "Title"+count, Author = "Author", Publisher = "Publisher", Year = 1000, Note = "Note" } });
}
}
Он работает, но мой DataGrid показать мне только около 50 000 -100 000 элементов (случайных) вместо моего Int sizeOfdb = +1000000 элемента. Почему это так работает? Как отремонтировать его? (Без «задачи» все работает нормально)
И как я могу использовать async/await в этом примере? Что-то в этом роде? (Не работает. Попробуйте использовать Dispathcher?)
public LibraryViewModel()
{
GeneratorAsync();
}
private async void GeneratorAsync()
{
await Task.Factory.StartNew(()=>{
for (count = 0; count < sizeOfdb; count++)
{
_books.Add(...);
}
});
}
Вы действительно не должны отображать 50 000 элементов в пользовательском интерфейсе, не говоря уже о 1 000 000. – svick