C#中的doEvents在我个人理解来看有点多线程的意思,但是他不是多线程,他是单线程的,只不过DoEvents可以执行Windows消息队列中的消息。
那么DoEvents的应用场景有哪些呢?
比如:在连接一个数据库的时候,读取数据库中所有的信息,由于是单线程的,所以这个时候系统会因为需要加载大量的数据而阻塞,winform的前端界面会因为这个卡顿,出现无法再拖拽窗口,无法点击界面按钮等情况,这个时候加一个DoEvents方法,就可以让窗口界面可以拖动,可以点击按钮。
解释:因为windows绘制窗口的命令是存储在windows的消息队列中,DoEvents可以唤醒消息队列,让他执行操作。但是这样会有一个缺点,程序运行的效率会大大降低,可能会降低好几倍,因此DoEvents方法不建议经常使用,他仅仅可以给用户带来良好的体验,对于程序本身,没有很值得使用的地方。