I haven't tried this.. but I'm guessing that because he's stopping in the debugger, the call to Collect() might not be synchronous? Maybe the GC is not happening as its on a background thread and hasn't had a chance to run yet. Just a wild guess without ever trying any of this..
You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.