private async void buttonRead_Click(object sender, EventArgs e) { SetProgressBar(0); try { buttonRead.Enabled = false; IDumpDataReader reader = CreateDumpDataReader(dataGridView1.Rows[0], false); if (reader == null) { throw new Exception("Invalid input" + Environment.NewLine + "Check highlighted cell"); } buttonSearch.Enabled = false; buttonNarrowDown.Enabled = false; buttonCancel.Enabled = true; cancel = new CancellationTokenSource(); Progress <int> prog = new Progress <int>(SetProgressBar); info = await Task.Run(() => reader.Read(cancel.Token, prog)); SetProgressBar(100); System.Media.SystemSounds.Asterisk.Play(); buttonSearch.Enabled = true; } catch (System.OperationCanceledException) { SetProgressBar(0); System.Media.SystemSounds.Asterisk.Play(); } catch (Exception ex) { SetProgressBar(0); MessageBox.Show("Read Failed" + Environment.NewLine + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { if (cancel != null) { cancel.Dispose(); } buttonCancel.Enabled = false; buttonRead.Enabled = true; } }
private async void buttonNarrowDown_Click(object sender, EventArgs e) { try { SetProgressBar(0); Dictionary <IDumpDataReader, long> dumps = new Dictionary <IDumpDataReader, long>(); for (int i = 1; i < dataGridView1.Rows.Count; i++) { DataGridViewRow row = dataGridView1.Rows[i]; ClearRowBackColor(row); if (IsBlankRow(row)) { continue; } IDumpDataReader reader = CreateDumpDataReader(row, true); if (reader != null) { long target = Convert.ToInt64(row.Cells[5].Value.ToString(), 16); dumps.Add(reader, target); } } if (dumps.Count == 0) { throw new Exception("Fill out 2nd line to narrow down"); } buttonRead.Enabled = false; buttonSearch.Enabled = false; buttonNarrowDown.Enabled = false; buttonCancel.Enabled = true; cancel = new CancellationTokenSource(); Progress <int> prog = new Progress <int>(SetProgressBar); List <List <IReverseOrderPath> > copyList = new List <List <IReverseOrderPath> >(result); result = await Task.Run(() => FindPath.NarrowDown(cancel.Token, prog, result, dumps)); SetProgressBar(100); System.Media.SystemSounds.Asterisk.Play(); } catch (System.OperationCanceledException) { SetProgressBar(0); System.Media.SystemSounds.Asterisk.Play(); } catch (Exception ex) { SetProgressBar(0); MessageBox.Show(Environment.NewLine + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { if (cancel != null) { cancel.Dispose(); } PrintPath(); buttonRead.Enabled = true; buttonSearch.Enabled = true; buttonNarrowDown.Enabled = true; buttonCancel.Enabled = false; } }