public TimingsEditor(MainWindow parent, SharedDisposable <RegistryKey> monitorKey, bool isCopy, string encodedMonitor, byte[] encodedGlasses) { InitializeComponent(); listWaveforms.DataSource = defaultGlassesCmds; this.parent = parent; this.monitorKey = monitorKey; this.previousName = isCopy ? null : encodedMonitor; if (encodedMonitor != null) { this.textDisplayTimings.Text = encodedMonitor; } if (encodedGlasses != null) { this.textGlassesTimings.Text = StructureExtensions.ByteArrayToString(encodedGlasses); } if (encodedMonitor != null) { btnDecode_Click(btnDecodeDisplayTimings, null); } if (encodedGlasses != null) { btnDecode_Click(btnDecodeGlassesTimings, null); } UpdateListBoxButtons(); UpdateSliderParams(); }
private void btnDeleteMonitor_Click(object sender, EventArgs e) { var currMonitorName = (string)comboMonitors.SelectedItem; if (currMonitorName == null) { return; } if (MessageBox.Show("Delete monitor " + currMonitorName + " ?", "Confirm monitor deletion", MessageBoxButtons.YesNo) != DialogResult.Yes) { return; } if (monitorSubKey != null) { monitorSubKey.Dispose(); monitorSubKey = null; } try { parametersKey.DeleteSubKeyTree(currMonitorName); comboMonitors.SelectedIndex--; } catch (Exception ex) { MessageBox.Show(ex.Message, "Error deleting registry key"); } btnRefreshMonitors_Click(null, null); }
private void TimingsEditor_FormClosed(object sender, FormClosedEventArgs e) { if (monitorKey != null) { monitorKey.Dispose(); monitorKey = null; } }
private void comboMonitors_SelectedIndexChanged(object sender, EventArgs e) { if (suppressComboSelectedIndexChanged) { return; } var currMonitorName = (string)comboMonitors.SelectedItem; if (currMonitorName == null) { listMonitorTimings.SelectedIndex = -1; listMonitorTimings.DataSource = null; btnCopyMonitor.Enabled = false; btnDeleteMonitor.Enabled = false; btnRefreshTimings.Enabled = false; btnNewTiming.Enabled = false; btnPatchNvStRes.Enabled = false; listMonitorTimings_SelectedIndexChanged(listMonitorTimings, null); return; } else { btnCopyMonitor.Enabled = true; btnDeleteMonitor.Enabled = true; btnRefreshTimings.Enabled = true; btnNewTiming.Enabled = true; btnPatchNvStRes.Enabled = true; } try { if (monitorSubKey != null) { monitorSubKey.Dispose(); } } catch (Exception) { } finally { monitorSubKey = null; } try { monitorSubKey = new SharedDisposable <RegistryKey>(() => parametersKey.OpenSubKey(currMonitorName, true)); } catch (Exception ex) { MessageBox.Show(ex.Message, String.Format("Error opening registry subkey for monitor {0}", currMonitorName)); return; } btnRefreshTimings_Click(null, null); }
private void MainWindow_FormClosed(object sender, FormClosedEventArgs e) { if (monitorSubKey != null) { monitorSubKey.Dispose(); monitorSubKey = null; } if (parametersKey != null) { parametersKey.Dispose(); parametersKey = null; } }
public SharedDisposable(SharedDisposable <T> share) { lock (share.target) { // Check that Dispose() did not get a lock and dispose the // object before we are able to obtain a reference to it. if (share.target.count == 0) { throw new ObjectDisposedException(nameof(share), "Target object has been disposed before being shared."); } target = share.target; target.count++; } }