Interrupt lengthy for loops
You could always set up a list of Actions that need to be worked on, and then loop through them checking for Stop each time.

Something like :

List&lt;Action&gt; actions = new List&lt;Action&gt; {
  () =&gt; LengthyMethodA(),
  () =&gt; LengthyMethodB(),
  () =&gt; LengthyMethodC() };

  for(int i = 0; i &lt; Length; i++)
  {    
    foreach (Action action in actions)
    {
       action();
       if(stop)
            return;
    }  
  }


This may or may not be better. It depends on the actual code. The actions list would represent an ordered set of transactional units of code - each unit must be completed, but the whole set can be broken apart and cancelled if necessary.