http://www.dribin.org/dave/blog/archives/2008/05/22/invoke_on_main_thread/