title: C# 2.0 generics: How to create an Action object with zero parameters
body: <p>First of all, I'm using VS2005 and C# 2.0.</p>
  
  <p>I'm trying to set a combobox' Text property from inside the SelectedIndexChanged event. From another <a href="https://stackoverflow.com/questions/1049775/how-do-i-change-combobox-text-inside-a-combobox-selectedindexchanged-event/1146785#1146785">thread</a> here on StackOverflow this was proposed done the following way:</p>
  
  <pre><code>BeginInvoke(new Action(() =&gt; someCombobox.Text = "x" )); 
  </code></pre>
  
  <p>Now, first of all this returns a compiler error for me. I believe that is because the Action object behaves differently in the two language specifications. In C# 2.0, the Action object seems to need the <code>&lt;T&gt;</code> structure in all declarations. Maybe I'm wrong, but I'd like to have that clarified.</p>
  
  <p>What does work is the following:</p>
  
  <pre><code>BeginInvoke(new Action&lt;string&gt;( delegate { someCombobox.Text = "x"; }), new object[] { "" });
  </code></pre>
  
  <p>However, it just seems very weird to me that I <em>have to</em> define the Action object with a type parameter (especially since I'm not intending to pass any parameters)! Somehow removing this parameter would also make the empty new object[] obsolete, which is what I want.</p>
  
  <p>Can anyone help me simplify the above call?</p>
  
  <p>Finally, is it guaranteed that BeginInvoke will finish after the SelectedIndexChanged and thus update the combobox' Text property with the correct text?</p>
  
  <p>I'd really appreciate to learn the answers to these questions.</p>