use safer asyncExec that checks for disposed control; fixes #27