使用VB6
执行时,在使用数据库时显示白色空白屏幕, 如何避免VB6中的白色空白屏幕。
白色空白屏幕意味着挂起(当它与数据库一起使用时)。
如何避免?
答案 0 :(得分:4)
我认为你的意思是在执行长时间运行的操作时GUI不会重绘。 (实际上不应该从Vista开始可见,但我离题了。)
如果您的长时间运行操作由多个步骤或紧密循环组成,那么您可以偶尔向DoEvents
拨打电话,以使表单即使在工作时也能保持一定的响应。
另一种选择是将长期运行的工作迁移到一个单独的线程中,但最后我认为这在VB6中并不是那么简单或容易实现。
答案 1 :(得分:1)
您应该在单独的线程中使用数据库,并且任何耗时的操作也应该在单独的线程中运行。在这种情况下,您的用户界面不会被冻结。
答案 2 :(得分:1)
这实际上与您的“How to exit the program immediately”问题相同。在这两种情况下,问题是您的数据库操作阻止VB6程序执行。
答案 3 :(得分:1)
我将此作为另一个问题的答案发布,但该模式也适用于此:
VB6本身就是单线程的。但是,您可以通过使用在自己的进程中运行的ActiveX EXE使其有点多线程,但仍然与原始VB6创建的EXE相连。
我过去使用的是Timer对象和ActiveX EXE。这种方法使您能够在一个位置本地化所有下载逻辑,像控制常规对象一样控制它,并使其在单独的EXE中运行,因此默认情况下使其成为多线程。
所以它的工作方式是这样的:
您在ActiveX EXE对象上调用LongRunningOperation方法 在LongRunningOperation方法中,您实例化Timer并让它几乎立即启动。 您退出LongRunningOperation方法,从而将控制权交还给调用它的实体。 然后通过事件(例如LongRunningOperationProgress或LongRunningOperationComplete等等)与主应用程序进行通信(
)答案 4 :(得分:0)
您的第一直觉应该是将资源密集型操作放在单独的线程中。这在VB6中有点困难,尽管如果调用本机CreateThread API可能(但不推荐)。
您也可以迁移到VB.NET,并本地使用Thread对象。