This seems strange...how is it better than the old code? Now this method depends on SynchronizeInvoke returning something that needs disposing (and is never null).