有时不支持Exists属性

问题描述 投票:0回答:1

我有一个非常令人沮丧的错误,有时会出现,有时它会毫无问题地运行。我的代码是:

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应该永远存在于所有事物上,为什么它有时候不存在?

jscript testcomplete
1个回答
-1
投票

此代码的问题在于,当您终止第一个进程时,其余进程的索引会减少。这个版本的代码更好:

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)
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.