窗体1 定时器,标签,按钮。窗体1打开后,定时器自动运行,定时器每秒时间到,使得标签数值加1,点击按钮会打开窗体2。窗体2以模式方式打开,点击按钮会启动一次通讯请求。
1-窗体1定时器,窗体2按钮触发同步通讯,窗体1的标签数值卡住不更新
2-窗体1定时器,窗体2按钮触发异步通讯,窗体1的标签数值卡住不更新
3-窗体1定时器触发线程,线程同步委托更新标签数值,窗体2按钮触发同步或异步通讯,窗体1的标签数值都会卡住不更新
4-窗体1定时器触发线程或者定时器使得更新标签数值,窗体2按钮触发线程,无论同步或异步通讯,窗体1的标签数值都可照常更新
总结:当主线程在忙碌于处理耗时的操作时,UI界面都会卡住。同步或异步区别在于通讯建立连接的那个过程,请求后的wait过程是不可避免的,都需要等待结果。
见解:主线程只负责刷新界面,耗时操作放在另外一个线程里面。耗时操作(通讯、数据库查询、大量计算)