【问题标题】:Scheduled Tasks - VB6 and Threading计划任务 - VB6 和线程
【发布时间】:2011-11-24 16:56:11
【问题描述】:

我管理一组每天运行的计划任务。计划任务启动一个 Visual Basic 6 应用程序,该应用程序根据传递的参数调用一个函数。例如,如果将“A”传递给计划任务,则运行函数 1,如果将 B 传递给计划任务,则运行函数 2,依此类推。但是,函数 1 和函数 2 也会调用函数 3。

我的问题是关于线程。由于函数 1 和函数 2 都调用函数 3,我应该在应用程序中使用某种形式的线程吗?

【问题讨论】:

  • 您需要检查您之前提出的问题并适当地标记为答案,然后才能有人对此问题添加另一个答案
  • 同意马特的观点。使用答案旁边的复选标记来接受您的问题的答案。

标签: multithreading vb6


【解决方案1】:

简短的回答是否定的,因为 VB6 不允许创建线程。但是,即使您使用的是支持线程的语言,也不清楚为什么需要使用单独的线程调用公共共享子例程(函数)。

【讨论】:

  • 函数3中有一条SQL更新语句,我关心的场景是这样的:1)函数1调用函数3。2)函数3完成前(步骤1),函数2调用函数3 并运行 SQL 更新 3) 函数 3 完成(步骤 1)并调用 SQL 更新 我相信在这种情况下我应该得到一个错误,因为游标会识别出数据已更改。我是线程新手。
  • 我们需要更多关于第 1 步和第 2 步的作用的信息,然后才能确定第 3 步将如何受到影响——关于正在运行的任何 SQL。
  • 这确实是一个数据库/SQL 问题。我实际上建议从您同时运行的 SQL 操作的详细信息开始一个新问题,这样您就可以获得观众和您正在寻找的答案。这不是 VB6 特有的问题。
【解决方案2】:

没有。这些函数永远不会同时调用。

  • 如果传递了“A”,则运行函数 1,然后调用函数 3。
  • 如果传递了“B”,则运行函数 2,然后调用函数 3。

函数 3 永远不会同时调用两次。

【讨论】:

  • 您能否解释一个需要线程的简单场景? VB6 是我使用的语言。
  • 永远不要在 VB6 中使用线程,你会更安全。真的。只是不要这样做。它本身不支持线程。
  • 如果定时任务A运行24小时(函数3调用百万次),定时任务B运行243小时(函数3调用百万次)会怎样?
  • 回答你的问题,没什么特别的。计划任务 A 需要 24 小时运行,任务 B 需要 243 小时运行。我感觉您假设它任务 A 和任务 B 同时运行,函数 3 只能由任务 A 或任务 B 运行。由于内存中同时存在两个完全独立的可执行文件实例时间,情况并非如此。
  • @w0051977:这就是交易的用途。
【解决方案3】:

VB 没有任何隐含的含义,这意味着您需要使用多个线程或注意它。 多个进程已经完全分开了。

如果该函数本身正在处理共享数据(在磁盘、数据库、注册表等上),那么您可能需要某种锁定。你需要什么取决于它在做什么。

【讨论】:

    猜你喜欢
    • 2014-05-14
    • 2011-05-29
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多