я принял следующий пример из MSDN для постепенного загрузки миниатюр в виде списка в WinRT App:Поэтапно загрузки элементов в ListView
https://code.msdn.microsoft.com/windowsapps/Data-Binding-7b1d67b5
Я хотел бы, чтобы удалить «ждать Task.Delay (10) "ниже. Когда я это сделаю, я получаю предупреждение о том, что методу не хватает оператора ожидания.
protected async override Task<IList<object>> LoadMoreItemsOverrideAsync(System.Threading.CancellationToken c, uint count)
{
uint toGenerate = System.Math.Min(count, _maxCount - _count);
// Wait for work
await Task.Delay(10);
// This code simply generates
var values = from j in Enumerable.Range((int)_count, (int)toGenerate)
select (object)_generator(j);
_count += toGenerate;
return values.ToArray();
}
Я попытался переписать метод и завернуть весь метод в задаче asfollows:
protected async override Task<IList<object>> LoadMoreItemsOverrideAsync(System.Threading.CancellationToken c, uint count)
{
return await Task.Run(() => {
uint toGenerate = System.Math.Min(count, _maxCount - _count);
// This code simply generates
var values = from j in Enumerable.Range((int)_count, (int)toGenerate)
select (object)_generator(j);
_count += toGenerate;
return values.ToList<object>();
});
}
Однако я получаю поточное исключение:
Исключения: Приложение называется интерфейс, который был сортировать по другой теме. (Исключение из HRESULT: 0x8001010E (RPC_E_WRONG_THREAD))
Кажется, мне нужно запустить это на тему пользовательского интерфейса? Но у меня нет доступа к Диспетчеру.
В поисках некоторых рекомендаций
Не существует * Вызывать (делегировать) * метод управления? –