Рекурсивный поиск на всех дисках определенных файлов не будет работать хорошо. Это займет около минуты на современных больших дисках.
Одна стандартная уловка, используемая проводником Windows, состоит в том, чтобы перечислять только каталоги и файлы верхнего уровня. Он помещает фиктивный узел в узел каталога. Когда пользователь открывает узел (событие BeforeExpand), он ищет только этот каталог и заменяет фиктивный узел каталогами и файлами, найденными в этом каталоге. Снова положить фиктивный узел в каталогах. Etcetera.
Вы можете увидеть это на работе, добавив пустой подкаталог. Узел каталога будет показан с + глифом. Когда вы открываете его, Explorer обнаруживает, что в списке нет каталога или файлов, и удаляет фиктивный узел. Символ + исчезает.
Это очень быстро, перечисление содержимого одного каталога занимает намного меньше секунды. Однако есть проблема с использованием этого подхода в вашем случае. Вероятность того, что каталог содержит подходящий музыкальный файл, невелика. Пользователь будет постоянно разочарован, обнаружив, что навигация по набору подкаталогов ничего не дает.
Именно поэтому в Windows есть специальное место для хранения определенных медиа-файлов. Моя музыка в этом случае. Используйте Environment.GetFolderPath (Environment.SpecialFolder.MyMusic), чтобы найти его. Повторение этого не должно занять много времени.