我正在使用VB在Visual Studio 2012中编写一个程序,它打开并调整非常大的Excel文件,但是从GUI开始,允许用户选择文件的位置和数据来自的文件。我还添加了一个进度条和一个文本框来显示进度,因为它有助于查看问题出现的位置并显示实际发生的事情。
不幸的是,尽管这些部分和代码已经到位,但是一旦程序开始运行,它就会冻结,既不会显示也不会输入任何内容。在程序结束时(一旦成功完成),您可以看到一切都按预期进行,并且已输入。这是一个单独的类,因为它是一个相当简单的应用程序。
我尝试添加System.Threading.Thread.Sleep(1000),希望暂停允许程序随时更新。不幸的是,这种情况并非如此。如何使程序减速足够长的时间以通过视觉更新?
答案 0 :(得分:4)
您要做的是为Excel处理创建一个单独的线程。
http://msdn.microsoft.com/en-us/library/btky721f.aspx
编辑:
VB6中的线程文档(没有看到你的VB6标签,发布这个以防万一)
http://msdn.microsoft.com/en-us/library/aa719109%28v=vs.71%29.aspx
<强>为什么吗
你的主窗口是它自己的一个线程,所有的绘图和更新都在这个线程中完成。如果一段代码需要一段时间才能执行,整个线程将被阻塞,等待此代码完成执行,因此,应用程序上不会刷新任何内容
现在,Thread.Sleep(1000)调用只是冻结你的主窗口再多一次
通过为Excel处理创建单独的线程,您现在可以释放主窗口,以便用户可以在完成任务时继续输入。