Иногда свойство Exists не поддерживается - PullRequest
0 голосов
/ 25 апреля 2019

Я получаю действительно расстраивающую ошибку, которая иногда появляется, а иногда проходит без проблем.Мой код:

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 должно всегда существовать во всем, так почему же иногда его просто нет?

1 Ответ

0 голосов
/ 26 апреля 2019

Проблема с этим кодом заключается в том, что при завершении первого процесса индексы остальных процессов уменьшаются.Эта версия кода лучше:

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)
  }
}
...