环境介绍:
一个客户端程序(有点复杂了……),程序界面有TAB页1-3,通过点击TAB可以看到3个界面,分别为A,B,C,目前在主进程中创建了2个工作线程,分别是thread1和thread2,两个工作线程分别进行1分钟和10秒钟的定时计算,计算结果反馈给A,B,C进行显示。引子1:
学习了多线程的一点凤毛麟角,知道线程刷新UI时需要用到委托/事件和Invoke / BeginInvoke ,其中Invoke / BeginInvoke分别是同步和异步的概念(即是否导致工作线程等待),且是通过UI线程进行调用执行。
问题1:如果需要在UI刷新时保持工作线程中的数据不能产生变化,就需要用Invoke 而不能用BeginInvoke?引子2:
Thread1产生一个事件event1,Thread2产生一个事件event2,通过事件的形式通信告知主进程进行UI的刷新
问题2:虽然有A、B、C三个界面(不同class),但UI说到底只是一个主进程,因为event中注册了事件是一件一件执行的,是否意味着只能按照事件注册的顺序进行更新?会出现刷新A界面造成B界面刷新迟缓的现象吗? 引子3:
其实最好的办法就是A,B,C3个UI直接3个exe,但是现在就是要求1个程序的情况怎么破?
问题3:
是否需要创建多线程的UI?要创建多线程UI应该怎样创建?
多线程UI

解决方案 »

  1.   

    1,你应该把UI线程和工作线程分开,工作线程操作数据完成后只发送消息给UI,但不要操作UI2,有消息泵的。先到行得。3,你真的需要同时刷很多UI吗
      

  2.   

    不好意思 因为 实在是学习时间有限但又要求很高 所以让达人们见笑了!~
    因为3个TAB页面都是实时页面,因此对UI的响应速度也要求较高
    我懂2楼达人的意思,虽然同一个线程中的EVENT是依次通知主线程执行,但是反应到主线程确实可能会穿插,但即使如此也会造成可能会有某TAB页面无法及时刷新的情况吧,比如UI在做更新A界面的操作,B界面的更新必然就要等A结束了才能继续?还是说UI更新速度确实很快可以忽略不计?
      

  3.   

    实际上我的意思就是大量数据(ABC三个TAB界面的数据 )造成UI大量操作时,会造成 UI假死的情况 如何 解决……………………