我正在编程,使用不同的随机函数生成十六进制的密钥,并将其写入文本文件。我只有两个cmd按钮和显示当前时间和进程状态的状态栏。现在,在单击用于密钥生成的cmd按钮时,表单被锁定,所有其他活动都被挂起,甚至时间被挂起,直到该过程结束。我甚至不能中止中间的过程。如果可能的话,我想用线程来解决这个问题。我该怎么做,请提个建议。否则,如果有任何其他方法来解决这个问题,请建议。
非常感谢您对我们的宝贵帮助
发布于 2008-12-20 11:27:06
在VB6中执行多线程的唯一“合法”方法是通过ActiveX EXEs -只需使用项目属性对话框中的每对象线程选项即可。Matt Curland有一个很好的例子,如何将您的标准可执行文件转换为多线程ActiveX可执行文件。这样做允许VB6调试器在没有崩溃的情况下工作,因为在集成开发环境中,所有的事情都是在一个线程上执行的。
如果你想减少ActiveX EXE多线程的开销,那么你必须使用进程内多线程,这是不受支持的,但仍然是可行的。查看Compact In-Process Multi-threading: A FolderWatcher with sample UI,了解安全使用CreateThread和在新线程上安全初始化VB6运行时的方法(再次感谢Matt Curland )。
您可能想要查看他的Advanced Visual Basic 6书以了解更多细节。
发布于 2008-12-20 10:28:55
您可以使用CreateThread Win32 API,但请记住,VB6调试器不能处理多线程。
此外,如果你有任何类型的循环,试着在循环中的某个地方打"DoEvents“。这将严重降低性能,但您的表单将具有响应性。
发布于 2008-12-20 10:30:57
这可能是不可能的,但你可能想要考虑切换到.NET,在那里VB完全支持线程。
另一种厚颜无耻的方法(不是很好,但很有效)可能是让一个exe外壳来做这项工作,然后让你的VB6简单地轮询一个结果文件。这将是一个独立的进程,因此线程是完全隔离的。真的很乱,我不推荐这样做。
https://stackoverflow.com/questions/383162
复制相似问题