このコードはスローを続けていますが、これはキーワードが原因でスタックがいっぱいになるか、スレッドの可用性の問題が原因stackoverflow exceptionであると感じています。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()代わりに if を使用すると、3 回の反復後にエラーがスローされますがresults.Count、コレクションのすべてではないにしても、少なくとも半分を反復した後にスローされます (異なるようです)。どちらも同じ値を返します。stackoverflow 例外を発生させたり、使用可能なすべてのスレッドを使い果たしたりせずにループする最良の方法は何ですか?