InvalidOperationException в Unity при вызове GetProcessesByName

147
24 января 2020, 12:20

Проверяю запущен ли стим

if (Process.GetProcessesByName("Steam").FirstOrDefault() != null) {
    Debug.Log("Steam запущен");
    return;
}
Debug.Log("Steam не запущен");

Steam запущен, но получаю ошибку:

InvalidOperationException: Process has exited, so the requested information is not available.

try {
    var procList = Process.GetProcesses();
    if (procList.Any(t => string.Equals(t.ProcessName, "Steam"))) {
        Debug.Log("Steam enable");
        return;
    }
    Debug.Log("Steam disable");
} catch (Exception e) {
    Debug.Log(e);
}
Answer 1

GetProcessesByName моновский вызывает GetProcesses, который внутри итерирует список. Для части процессов в системе нельзя получить имя и метод выбрасывает исключение.

Рекомендую вам самому прогонять этот список:

var procList = Process.GetProcesses();
for (int i = 0; i < procList.Length; i++) {
    try {
        if(string.Equals(procList[i].ProcessName, "Steam") {
             Debug.Log("Steam запущен");
             return;
        }
    } catch {}
}
Debug.Log("Steam не запущен");
READ ALSO
Ошибка с xml при создании уведомления

Ошибка с xml при создании уведомления

Создаю простое консольное приложение, которое создаёт уведомление в винде 10Но уже какой час, проблема с методом GetXml

136
Как исправить ajax фильтр?

Как исправить ajax фильтр?

Пишу фильтр на с использованием ajax, который выдает пост по содержанию кастомного поля

153
Как вывести массив в массиве красиво разложив? [закрыт]

Как вывести массив в массиве красиво разложив? [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы он соответствовал тематике «Stack Overflow на русском»

127