一、为什么Control类提供了Invoke和BeginInvoke机制?
关于这个问题的最主要的原因已经是dotnet程序员众所周知的,我在此费点笔墨再次记录到自己的日志,以便日后提醒一下自己。
1、windows程序消息机制
Windows GUI程序是基于消息机制的,有个主线程维护着一个消息泵。这个消息泵让windows程序生生不息。
Windows GUI程序的消息循环
Windows程序有个消息队列,窗体上的所有消息是这个队列里面消息的最主要来源。这里的while循环使用了GetMessage()这个方法,这是个阻塞方法,也就是队列为空时方法就会被阻塞,从而这个while循环停止运动,这避免了一个程序把cpu无缘无故地耗尽,让其它程序难以得到响应。当然在某些需要cpu最大限度运动的程序里面就可以使用另外的方法,例如某些3d游戏或者及时战略游戏中,一般会使用PeekMessage()这个方法,它不会被windows阻塞,从而保证整个游戏的流畅和比较高的帧速。
这个主线程维护着整个窗体以及上面的子控件。当它得到一个消息,就会调用DispatchMessage方法派遣消息,这会引起对窗体上的窗口过程的调用。窗口过程里面当然是程序员提供的窗体数据更新代码和其它代码。
桌面应用程序就是GUI程序,是采用图形方式显示的计算机 *** 作用户界面。
图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备 *** 纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。
相对于Web应用程序而言的,主要区别在于应用程序自身与它的用户界面之间的相对位置不同。
扩展资料
桌面应用程序 在开发的过程中需要考虑很多因素。为了让最终用户获得最佳的使用体验,不但需要考虑 逻辑 上的因素还要考虑 技术 上的因素。桌面应用程序 首先考虑的并非靠平台,而且 桌面应用程序 更依赖硬件的支持。
运行桌面应用程序时,用户界面会出现在运行应用程序的机器屏幕上。应用程序和它的用户界面之间的消息通过机器的 *** 作系统进行传递。
参考资料来源:百度百科-桌面应用程序
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)