【问题标题】:To use thread in programming in vb6在vb6编程中使用线程
【发布时间】:2008-12-20 10:15:37
【问题描述】:

我正在编程使用不同的随机函数生成十六进制密钥并将其写入文本文件。我只有两个 cmd 按钮和显示当前时间和进程状态的状态栏。现在单击 cmd 按钮进行密钥生成,表单被锁定,所有其他活动都被暂停,即使时间暂停,直到进程结束。我什至不能在两者之间中止这个过程。如果可能的话,我想使用线程来解决这个问题。我该怎么做请建议。否则如果有任何其他方法可以解决这个问题,请提出。

感谢您期待宝贵的帮助

【问题讨论】:

  • 对使用的原始标签大笑。感谢您修复马克。否则问得很好!

标签: multithreading vb6


【解决方案1】:

在 VB6 中执行多线程的唯一“合法”方式是通过 ActiveX EXE —— 只需使用项目属性对话框中的每个对象线程选项。 Matt Curland 有一个很好的例子,如何将标准 EXE 转换为多线程 ActiveX EXE。这样做可以让 VB6 调试器在不崩溃的情况下工作,因为在 IDE 中,所有内容都在单个线程上执行。

如果您想减少 ActiveX EXE 多线程的开销,那么您必须使用不受支持但仍然可行的进程内多线程。检查Compact In-Process Multi-threading: A FolderWatcher with sample UI 以获取安全使用 CreateThread 并在新线程上安全初始化 VB6 运行时的方法(再次感谢 Matt Curland)。

您可能想查看他的Advanced Visual Basic 6 书以了解更多详细信息。

【讨论】:

  • 查看有关如何正确进行超链接的 Markdown 参考。您不能使用标准 HTML。
  • 我在使用activex exe 进行多线程处理时注意到的一件有趣的事情是ide 调试模式与构建exe 并运行exe 时的行为不同。这是为什么?
  • @melaos:VB6 IDE 始终是单线程的,因此每个对象的线程 ActiveX EXE 的行为不同,只是为了可调试。
【解决方案2】:

您可以使用 CreateThread Win32 API,但请记住 VB6 调试器无法处理多个线程。

此外,如果您有任何类型的循环,请尝试在循环中的某处拍打“DoEvents”。它会严重降低性能,但您的表单会响应。

【讨论】:

    【解决方案3】:

    这可能是不可能的,但您可能需要考虑切换到 .NET,其中 VB 完全支持线程。

    另一种厚颜无耻的方法(不是很好,但它有效)可能会使用一个 exe 来完成这项工作,并让您的 VB6 简单地轮询结果文件。这将是一个单独的进程,因此完全隔离了线程。真的很乱,不推荐。

    【讨论】:

    • 另一种厚颜无耻但不那么混乱的方法是编写一个 ActiveX exe 来完成这项工作。自动独立的进程和完全隔离的线程,但您可以在线程之间传递数据并让 COM 为您进行编组。通过对原始客户端的回调发出任务完成的信号。它写在 Dan Appleman 的《用 VB6 开发 com/ActiveX 组件》一书中
    • ...我在这个答案中写了更多关于它的内容。 stackoverflow.com/questions/727386/…
    【解决方案4】:

    您还可以通过 CreateProcess 启动子进程并为 IPC 重定向 StdIO 流。匿名管道 I/O 并不像试图通过磁盘文件进行通信那样被破解。

    有一些免费的组件可以做到这一点。

    http://www.xtremevbtalk.com/showpost.php?p=1304628&postcount=4

    【讨论】:

      【解决方案5】:

      我相信 Matt Curland ActiveX exe 方法是经典的方法。或者,您可以使用DoEvents。或者将工作委托给单独的 ActiveX exe,例如 this。你也可以使用.NET BackgroundWorker component,但事实证明doesn't work

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多