Have you tried EnumerateFiles method of DirectoryInfo class?
As MSDN Says
The
EnumerateFilesandGetFilesmethods differ as follows: When you
useEnumerateFiles, you can start enumerating the collection of
FileInfoobjects before the whole collection is returned; when you
useGetFiles, you must wait for the whole array ofFileInfoobjects to
be returned before you can access the array. Therefore, when you are
working with many files and directories,EnumerateFilescan be more
efficient.