我有一个非常令人沮丧的错误,有时会出现,有时它会毫无问题地运行。我的代码是:
function killProcesses(processes) { // A string array of process names.
for (i = 0; i < processes.length; i++) {
var process = Sys.WaitProcess(processes[i])
if (process.Exists) { // Sometimes the script will crash right here
process.Terminate()
}
}
因为我创建了这个函数,所以我总是传递完全相同的进程名称,有时候它们是启动别人的,但这从来就不是问题。但有时候它会在跑步时崩溃并告诉我Object doesn't support this property or method
。就像我说的那样,这个函数和调用它的行从来没有被改变过,所以我不明白为什么有时它会失败。
我之前已经在脚本的其他部分得到了这个,所以我想知道它是否可能是相关的,或者我的系统一般存在一些错误。让我感到困惑的是,Exists
应该永远存在于所有事物上,为什么它有时候不存在?
此代码的问题在于,当您终止第一个进程时,其余进程的索引会减少。这个版本的代码更好:
function killProcess(pName) {
var p = Sys.WaitProcess(pName, 5000, 1);
while (p.Exists) {
p.Terminate();
while (p.Exists)
Sys.Delay(50);
p = Sys.WaitProcess(pName, 5000, 1)
}
}