//更新虚拟机和设备显示 private void UpdateVM() { listView1.Groups.Clear(); listView1.Items.Clear(); //获取虚拟机列表 var vms = PowerShellWrapper.GetVM(); var groups = new List <ListViewGroup>(); foreach (var vm in vms) { ListViewGroup group = new ListViewGroup("[" + vm.State + "]" + vm.Name); groups.Add(group); } //获取每个虚拟机下设备列表 var lviss = new List <ListViewItem> [vms.Count]; Parallel.For(0, vms.Count, (int i) => { var vm = vms[i]; var group = groups[i]; lviss[i] = new List <ListViewItem>(); var lvis = lviss[i]; foreach (var dd in PowerShellWrapper.GetVMAssignableDevice(vm)) { var dev = PowerShellWrapper.GetPnpDevice(dd.InstanceID); //string name = dev.CimInstanceProperties["Name"] != null ? dev.CimInstanceProperties["Name"].Value as string : null; string name = dd.Name; string clas = dev.CimInstanceProperties["PnpClass"] != null ? dev.CimInstanceProperties["PnpClass"].Value as string : null; lvis.Add(new ListViewItem(new string[] { name != null ? name : "", clas != null ? clas : "", dd.LocationPath }, group) { Tag = new DeviceData(vm, dd), }); } lvis.Add(new ListViewItem("...", group) { Tag = new DeviceData(vm, null), }); }); //更新ListView listView1.BeginUpdate(); foreach (var group in groups) { listView1.Groups.Add(group); } foreach (var lvis in lviss) { foreach (var lvi in lvis) { listView1.Items.Add(lvi); } } listView1.EndUpdate(); }
private void PnpDeviceForm_Load(object sender, EventArgs e) { Devices = PowerShellWrapper.GetPnpDevice(); UpdateDevices(); }