Do we need to call uninitialize? I think once we exit the block we should do that -- in general, every call to CoInitialize in a thread should be balanced by a call to CoUninitialize.