このコードはスローを続けていますが、これはキーワードが原因でスタックがいっぱいになるか、スレッドの可用性の問題が原因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 例外を発生させたり、使用可能なすべてのスレッドを使い果たしたりせずにループする最良の方法は何ですか?