private void HydroErosion(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; for (int p = 0; p < hydroErodePasses; p++) { if (worker.CancellationPending) { e.Cancel = true; break; } worker.ReportProgress(p * 100 / hydroErodePasses); terrain.vFieldHydroErosion(solubility, depositionRate, waterCapacity, rainChance, rainAmount, evaporation, timeStep); } }