title: c# start async method within object constructor - bad practice?
body: <p>i have some code in an object constructor similar to </p>
  
  <pre><code>delegate DataSet MyInvoker;
  
  public MyObject(Param1 p1)
  {
      // property sets here
      // ...
  
      BeginMyAsyncMethod();
  }
  
  public void BeginMyAsyncMethod() 
  {
      // set some properties
      // ...
  
      MyInvoker inv = new MyInvoker(SomeBeginMethod);
      inv.BeginInvoke(new AsyncCallback(SomeEndMethod), null);
  }
  </code></pre>
  
  <p><strong>My questions are:</strong></p>
  
  <ol>
  <li>Is this generally considered bad practice?</li>
  <li>Would it be better (or good) practice to define a start method in my class which the user would call to carry out the async action?</li>
  </ol>
  
  <p>This <a href="https://stackoverflow.com/questions/938426/bad-practice-to-run-code-in-constructor-thats-likely-to-fail/938453#938453">answer</a> gives me the impression that leaving it to the user is bad practice although I am talking specifically about starting async methods in the constructor, not about the correct construction of an object.</p>