WScript.Sleep 的替代方案

WScript.Sleep 的替代方案

我使用 WhatsUpGold 来监控服务的正常运行时间,其中一个是 MySql 服务器。由于没有明确支持 MySql,我不得不编写 VBS 脚本来执行此操作。不幸的是,WhatsUpGold 不支持 WScript.Sleep。他们的论坛上的替代方案是这个但这似乎是一种肮脏的黑客行为。除了这两个方法,我还能使用其他方法吗?我真的不想到处复制/粘贴函数。

答案1

哦,现在这是一个黑客技巧。不过,如果应用程序运行的用户没有被锁定,以至于无法使用 wshell.run,它就会起作用。我觉得我其实很喜欢它……

如果应用程序在您有管理员权限的机器上运行,以便您可以注册一个 COM DLL,那么当我想在经典 ASP 代码中休眠以进行测试时(有时插入人为延迟很有用),我会使用一个简单的免费 DLL,不幸的是,原始来源不再提供该 DLL(请参阅此处进行讨论)。如果你想尝试一下,我放了一份副本这里。要调用,请使用类似Dim WaitObj: Set WaitObj = Server.CreateObject ("WaitFor.Comp"): WaitObj.WaitForSeconds 10

毫无疑问,该库只是 sleep API 调用的包装器,因此如果您不想信任来自某些未经审查的第三方的随机库(我不建议信任来自未经审查来源的匿名代码,我将自己视为未经审查的来源),您可以自己创建库。对于 VB6,该调用将声明为Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

不过,在尝试上述任何一种方法之前,我首先要做的是在 StackOverflow 上询问其他人在经典 ASP 中用于非繁忙等待的方法。您可能会发现还有另一个库仍受其创建者支持,或者是一种更好的技术。由于诀窍ping在于使用,CreaetObject我怀疑在经典 ASP 上下文中可用的任何内容都可以在您的应用程序中使用。

答案2

哎呀!我从来没有用过任何“WhatsUp”软件,所以我不熟悉了。快速浏览他们的论坛并用我的朋友 Gooogle 进行搜索证实了你提到的丑陋黑客。

我会像在批处理文件中那样滥用 PING 来获得延迟。这很聪明,但很丑陋。

避免丑陋的另一种方法是编写根本不需要任何“睡眠”功能的代码。您如何监控 MySQL?您是否使用 ODBC 连接到它并运行查询来判断它的“活动性”?

答案3

ping -n X 127.0.0.1 技巧是一种黑客手段,但并不特别卑鄙。自上个世纪以来,它广为人知,并在各种 Windows 批处理脚本中使用 ;)

答案4

相关内容