private void btnTurnOverRun_Click(object sender, EventArgs e) { int angle = Convert.ToInt32(txtTurnOverAngle.Text); ThreadParameter threadParam = new ThreadParameter(); threadParam.Angle = angle; threadParam.AnimationOnly = AnimationOnly; CollisionObjects = new Dictionary<int, CollisionItem>(); AnimationOnly = ckAnimationOnly.Checked; StopTurnOver = ckStopTurnOver.Checked; DisplayAngle = ckDisplayAngle.Checked; backgroundWorkerTurnOver.WorkerReportsProgress = true; backgroundWorkerTurnOver.WorkerSupportsCancellation = true; backgroundWorkerTurnOver.RunWorkerAsync(threadParam); }
private void backgroundWorkerTurnOver_DoWork(object sender, DoWorkEventArgs e) { ThreadParameter threadParam = (ThreadParameter)e.Argument; int count = threadParam.Angle; int waitTime = threadParam.AnimationOnly == true ? 100 : 0; for (int i = 0; i < count; i++) { if (backgroundWorkerTurnOver.CancellationPending == true) { e.Cancel = true; return; } backgroundWorkerTurnOver.ReportProgress(i); System.Threading.Thread.Sleep(waitTime); } e.Result = count; }