可以Application.DoEvents()在C#中使用吗?
这个函数是否能够让GUI跟上应用程序的其余部分,就像VB6 DoEvents一样?
我正在将一个古老的VB6程序移植到C#/ .Net.我不太了解VB6,我要求它更好地理解它.
旧的VB6程序有一个程序执行的主要过程,但是它也有很多事件处理程序,用于套接字事件或定时器事件,以及这些经常操作的共享资源的处理程序,例如,常见的全局变量,每当它们醒来并运行时.
尽管如此,旧程序似乎运行良好.
尝试在C#中执行相同的体系结构是灾难性的,因为套接字或计时器的事件处理程序由系统在主应用程序线程的不同线程中调用,并导致频繁的异常,例如"调用线程无法访问此对象,因为不同的线程拥有它.",更不用说更微妙的问题了.我在转换中的大部分工作是重新设计程序以使其成为线程安全的,并且消除了原始程序对全局变量的大量使用.
我的问题是VB6事件处理程序在单独的线程中运行吗?如果是这样的话,VB6怎么会侥幸逃脱呢?除此之外,VB6程序有一个计时器,每4秒钟唤醒一次,操纵一些全局变量并重新入睡,而主程序正在做它的事情.我不明白为什么这不会导致碰撞.