private void ThermalErosion(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; for (int p = 0; p < tErodePasses; p++) { if (worker.CancellationPending) { e.Cancel = true; break; } worker.ReportProgress(p * 100 / tErodePasses); terrain.thermalErosion(talusAngle); } }