Потому, что в многопотоке другие потоки тоже будут брать элементы из ресурсы и поэтому нельзя полагаться на количество элементов в ресурсе.Но по сути это не чтобы проблема, просто в нем нет смысла, он скорей всего просто стопнется когда ресурс закончится, аналогично как если бы это был просто while.
@Antonio "Вызов функции в несколько потоков" намного мощнее, может динамически менять количество потоков в любое время. Например, скачать 10 файлов не последовательно, а параллельно, а после завершения удалить потоки и продолжить далее. OnApplicationStart - просто полезное сокращение.