/////////////////////////////////////////////////////////////////////////////Progress Bar Helper Functions private void ConfigureTaskBar(string LabelText, int BarProgressScale, int AsyncTime) { TaskBar_Panel.Visible = true; TaskBar_TaskText.Text = LabelText; TaskBar_Progress.Maximum = BarProgressScale; TaskBar_BG.RunWorkerAsync(argument: new Tuple <int, int>(BarProgressScale, AsyncTime)); }
///////////////////////////////////////////////////////////////////////////////////////////////////////////Async Wrappers private async Task <bool> RenderYAsync(string FileName) { YImage = await Task.Run(() => RenderY(FileName)); Roberts_One.Enabled = true; Sobel_Vert.Enabled = true; Prewitt_Diag.Enabled = true; Prewitt_Vert.Enabled = true; TaskBar_BG.CancelAsync(); return(true); }
private async void Roberts_One_Click(object sender, EventArgs e) { if (ImageHolder.Image != null && yExists) { Roberts_One.Enabled = false; ConfigureTaskBar("Rendering Roberts Edge", YImage.Height * YImage.Width, 1); Form window = await RenderEdgeWindowAsync("Robert's Cross Edge Detection", 2, new int[] { 6, 7 }); window.Show(); TaskBar_BG.CancelAsync(); Roberts_One.Enabled = true; } }
private async void button1_Click(object sender, EventArgs e) { if (ImageHolder.Image != null && yExists) { Sobel_Vert.Enabled = false; ConfigureTaskBar("Rendering Sobell Edge", YImage.Height * YImage.Width, 3); Form window = await RenderEdgeWindowAsync("Sobel Vertical Edge Detection", 3, new int[] { 4, 5 }); window.Show(); TaskBar_BG.CancelAsync(); Sobel_Vert.Enabled = true; } }
private async void Prewit_Diag_Click(object sender, EventArgs e) { if (ImageHolder.Image != null && yExists) { Prewitt_Diag.Enabled = false; ConfigureTaskBar("Rendering Prewitt Diagonal Edge", YImage.Height * YImage.Width, 3); Form window = await RenderEdgeWindowAsync("Prewitt Vertical Edge Detection", 3, new int[] { 2, 3 }); window.Show(); TaskBar_BG.CancelAsync(); Prewitt_Diag.Enabled = true; } }
private void TaskBar_BG_DoWork(object sender, DoWorkEventArgs e) { dynamic argTuple = e.Argument; for (int i = 0; i < argTuple.Item1; i++) { if (TaskBar_BG.CancellationPending) { e.Cancel = true; return; } System.Threading.Thread.Sleep(argTuple.Item2); TaskBar_BG.ReportProgress(1); } e.Result = true; }