Пытаюсь получить текущего работающего пользователя, через WMI. Но происходит не понятная мне ошибка. Метод не должен возвращать null, но он это делает.
вот сам метод
public static async Task<object> GetCurrentUser(object ipAddress)
{
return await Task.Run(() =>
{
try
{
ManagementScope scope = new ManagementScope("\\\\" + ipAddress + "\\root\\cimv2");
scope.Connect();
ObjectQuery query = new ObjectQuery("SELECT username FROM Win32_ComputerSystem");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection queryCollection = searcher.Get();
foreach (ManagementObject m in queryCollection)
{
return m["username"];
}
return "0";
}
catch (Exception)
{
return "0";
}
});
}
Ошибка возникает следующая
Вот как я вызываю этот метод.
Parallel.ForEach(ping_success_ips, opts, ip =>
{
Computer computer = new Computer
{
Status = true,
Os = WMI.GetOs(ip).GetAwaiter().GetResult().ToString(),
Mac = WMI.GetMacAddress(ip),
IP = ip,
Hostname = WMI.GetHostName(ip).GetAwaiter().GetResult().ToString(),
ONTime = DateTime.Now
};
User user = new User
{
ComputerId = computer.Id,
Username = WMI.GetCurrentUser(ip).GetAwaiter().GetResult().ToString(),
Ontime = DateTime.Now
};
lock (computer)
{
lock (user)
{
using (var appContext = new LanScannerModel())
{
appContext.Computers.Add(computer);
appContext.Users.Add(user);
appContext.SaveChanges();
}
}
}
Console.WriteLine(computer.IP + " "+ computer.Mac + " " + computer.Os + " " + computer.Hostname);
});
Возможно это происходит из-за асинхронности метода и он не успевает выполнить запрос и возвращает null. Не могу понять, почему это происходит?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Необходимо вывести из данные из List в таблицу, которая находится во вложенном отчетеОднако при привязки List к DataSource вложенного отчета , выводится...
Есть проблема с созданием подключения к OracleСоздаётся переменная:
При загрузки контента со сторонней страницы обнаружил такую проблемуОн загружает первый генерируемый код HTML не дожидаясь загрузки скриптов...