bug fixed: access UI component in async thread