Register for OS file system changes instead of scanning
The scanning process seems to be rather resource intensive and slow, I know some other DLNA servers use libevent in linux to monitor for changes in the file system and in windows there is a similar API System.IO.FileSystemWatcher. This should greatly reduce system resources and disk access, requiring only a full scan on launch to find out what has changed with the app was offline.