public event PercentDone_EventHandler PercentDone;//事件名稱PercentDone public void LongTask(int max, int Intervals) { bool cancel = false; int i = 1; while ((i <= max)) { // Step 2; Fire Event - Invoke if (PercentDone != null) { PercentDone.Invoke(i, ref cancel); } i = (i + Intervals); if ((cancel == true)) { return; } Application.DoEvents(); } }