Запуск метода Async в цикле без исключения StackoverflowC#

Место общения программистов C#
Ответить
Anonymous
 Запуск метода Async в цикле без исключения Stackoverflow

Сообщение Anonymous »

Этот фрагмент кода продолжает выдавать исключение stackoverflow, и у меня такое ощущение, что это либо из-за ключевого слова await, вызывающего заполнение стека, либо из-за проблемы с доступностью потока. Однако я не уверен, каким будет лучший способ исправить это.

Переменная results представляет собой просто коллекцию StorageFiles, и если ее значение превышает 1020 или около того, выдается исключение; в противном случае обычно все в порядке.

Код: Выделить всё

private async void GetMusicTest()
{
var sfolder = await StorageFolder.GetFolderFromPathAsync(dir);

var query =  sfolder.CreateFileQueryWithOptions(queryOptions);

var results = await query.GetFilesAsync();

for (int i = 0; i < results.Count; i++)
{
MusicProperties mp = await results[i].Properties.GetMusicPropertiesAsync();
Debug.WriteLine(mp.Title);
}
}
Этот код отлично работает в консольном приложении, но при использовании в настольном приложении WinForm выдается ошибка.

Интересно, что если вместо этого используется result.Count(), то ошибка выдается после трех итераций, тогда как results.Count выдает ее после повторения хотя бы половины коллекции, если не всей (кажется, она различается). Они оба возвращают одни и те же значения. Как лучше всего выполнить цикл, не вызывая исключения stackoverflow и не используя все доступные потоки?

Подробнее здесь: https://stackoverflow.com/questions/132 ... -exception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»