У меня есть рабочий рабочий фон в моем приложении, который предназначен для автоматического запуска сеанса пользователя, если его еще нет.C# BackgroundWorker Неожиданно выходит
Это делается на фоне работника (backgroundInit) при инициализации. Как вы можете видеть ниже, у меня есть while
цикл, который продолжает работать до тех пор, как вар checker
остается ложным:
var checker = false;
var i = 0;
while (checker == false)
{
_session = funcs.GetSession(_servers, _name);
_sessID = _session[0].Trim();
_servName = _session[1];
checker = funcs.CheckRunning("lync.exe");
i++;
if (i > 200)
{
break;
}
}
Метод CheckRunning просто проверяет, если указанная программа (в данном случае, «Lync») является в настоящее время работает и возвращает true
или false
соответственно (это делается с помощью команды CMD).
Однако, когда я запускаю приложение на пустой сессии, цикл while повторяется только один раз до выхода, хотя «Lync» определенно не работает.
Есть ли причина, по которой запуск процесса или слишком много процессов из фонового работника может привести к его завершению?
Так 'checker' является' false' после 'checker = funcs.CheckRunning (" lync.exe ");'? Если это так, этот вопрос не имеет смысла, поскольку «BackgroundWorker» выходит ** ожидаемо **, и проблема - это функция, которая проверяет ваш процесс. В противном случае вам нужно быть более явным, есть ли какое-либо исключение? Вы пробовали пошаговую отладку? – Jcl
Может быть, какое-то исключение бросили? Например. ваш 'GetSession' возвращает пустой или пустой массив. – Nikita
while (! Funcs.CheckRunning ("lync.exe")) было бы проще прочитать. И переименуйте в IsRunning. –