You can't avoid the cost of unzipping 1,000,000 files, but you can choose the way it'll cost you - processor usage, or time. If you don't want to lock your main thread, let a secondary thread handle the file processing for you.
Options:
- If time isn't an issue, spawn a background thread with low priority.
- If you want to abuse your processors - spawn several threads, set processor affinity for each of them, let them do their work in parallel.
But that doesn't seem to be your issue at all. It seems to me that SevenZipExtractor is behaving in a different way than the standalone .exe. I would obviously stick to the first (working) option until I figured out what's wrong with the 2nd approach.
You may also want to pay a visit to sevenzipsharp's CodePlex discussion group.