private void DeregisterVmRowEvents(VmPrecheckRow row) { if (row.vm != null) { row.vm.PropertyChanged -= VM_PropertyChanged; VM_guest_metrics gm = connection.Resolve(row.vm.guest_metrics); if (gm == null) { return; } gm.PropertyChanged -= gm_PropertyChanged; } }
private void populateVMs() { Program.AssertOnEventThread(); deregisterVMEvents(); Dictionary <string, AsyncAction> solveActionsByUuid = new Dictionary <string, AsyncAction>(); foreach (VmPrecheckRow i in vms.Values) { solveActionsByUuid.Add(i.vm.uuid, i.solutionAction); } vms = new Dictionary <string, VmPrecheckRow>(); try { dataGridViewVms.SuspendLayout(); dataGridViewVms.Rows.Clear(); foreach (VM vm in connection.ResolveAll(host.resident_VMs)) { if (vm.is_control_domain || vm.is_a_template) { continue; } vm.PropertyChanged += VM_PropertyChanged; var row = new VmPrecheckRow(this, vm); if (solveActionsByUuid.ContainsKey(vm.uuid)) { row.UpdateSolutionAction(solveActionsByUuid[vm.uuid]); } vms.Add(vm.opaque_ref, row); dataGridViewVms.Rows.Add(row); } } finally { dataGridViewVms.ResumeLayout(); RefreshEntermaintenanceButton(); } }
private void PopulateVMs() { Program.AssertOnEventThread(); try { dataGridViewVms.SuspendLayout(); foreach (VM vm in connection.ResolveAll(_host.resident_VMs)) { if (vm.is_control_domain || vm.is_a_template) { continue; } vm.PropertyChanged += VM_PropertyChanged; solveActionsByVmUuid.TryGetValue(vm.uuid, out var action); var row = new VmPrecheckRow(vm) { SolutionAction = action }; dataGridViewVms.Rows.Add(row); } foreach (KeyValuePair <XenRef <VM>, string[]> kvp in reasons) { if (kvp.Value[0].Trim().ToLower() != "wlb") { UpdateVMWithError(kvp.Value, kvp.Key.opaque_ref); } } } finally { dataGridViewVms.ResumeLayout(); } }