title: Passing in an anonymous delegate to a thread...why does this work?
body: <p>In my program, we split up a large amount of data that needs to be looked over across four threads. </p>
  
  <pre><code>Thread one = new Thread(delegate() { NewMethod(recordsSplitIntoQuarters[0], param2, param3, param4, param5); });
  Thread two = new Thread(delegate() { NewMethod(recordsSplitIntoQuarters[1], param2, param3, param4, param5); });
  Thread three = new Thread(delegate() { NewMethod(recordsSplitIntoQuarters[2], param2, param3, param4, param5); });
  Thread four= new Thread(delegate() { NewMethod(recordsSplitIntoQuarters[3], param2, param3, param4, param5); });
  </code></pre>
  
  <p>Our coding standards require that we are StyleCop compliant, as it were, and StyleCop demands the following:</p>
  
  <blockquote>
    <p>SA1410: Remove the parenthesis from the anonymous method, since the delegate's parameter list is empty.</p>
  </blockquote>
  
  <p>Doing that gives me this compiler error:</p>
  
  <blockquote>
    <p>The call is ambiguous between the following methods or properties: 'System.Threading.Thread.Thread(System.Threading.ParameterizedThreadStart)' and 'System.Threading.Thread.Thread(System.Threading.ThreadStart)'</p>
  </blockquote>
  
  <p>I've looked into the ThreadStart and ParameterizedThreadStart objects and I just can't figure out how to get what I need done with either of those objects.</p>
  
  <p>My question: how do the anonymous delegates work? What do they compile down to? In the end, I will have to get this working without the anonymous delegates, but I don't know where to begin.</p>
  
  <p>Thanks for the help,</p>
  
  <p>Seeker</p>