title: How to restart a task elegantly?
body: <p>So I have something like this:</p>
  
  <p><code>Task.Factory.FromAsync&lt;TcpClient&gt;(tcpListener.BeginAcceptTcpClient, tcpListener.EndAcceptTcpClient, tcpListener).ContinueWith(ConnectionAccepted);</code></p>
  
  <pre><code>private void ConnectionAccepted(Task&lt;TcpClient&gt; tcpClientTask)
  {
      TcpClient tcpClient = tcpClientTask.Result;
  
      // Do something with tcpClient
  }
  </code></pre>
  
  <p>Now I'm wondering, how can I initiate <code>Task.Factory.FromAsync&lt;TcpClient&gt;(...)</code> again at the end of this method? I can't really just copy and paste the line of code because I don't have access to TcpListener and would rather not make it a member variable. Even if I did though, it's such a long line of code it kinda feels like code duplication to me.</p>
  
  <p>Does the Tasks framework provide some sort of mechanism to accomplish this?</p>
  
  <p>Thanks.</p>