title: Return before async Task complete
body: <p>I'm working on an ASP.NET MVC 4 web application. I'm using .NET 4.5 and am trying to take advantage of the new asynchronous API's.</p>
  
  <p>I have a couple situations where I want to schedule an async Task to run later while I return back an immediately important value right away. For example, here is a "Login" method which I want to return a new SessionID as quickly as possible, but once I've returned the SessionID I want to clean out old expired SessionID's:</p>
  
  <pre><code>public async Task&lt;Guid&gt; LogIn(string UserName, string Password)
  {
      //Asynchronously get ClientID from DB using UserName and Password
  
      Session NewSession = new Session()
      {
          ClientID = ClientID,
          TimeStamp = DateTime.Now
      };
      DB.Sessions.Add(NewSession);
      await DB.SaveChangesAsync();    //NewSession.ID is autopopulated by DB
  
      CleanSessions(ClientID);    //Async method which I want to execute later
  
      return NewSession.ID;
  }
  
  private async void CleanSessions(int ClientID)
  {
      //Asynchronously get expired sessions from DB based on ClientID and mark them for removal
      await DB.SaveChangesAsync();
  }
  </code></pre>
  
  <p>I've tried a bunch of different things including combinations of Task.Run() and Parallel.Invoke() but CleanSessions never gets called. How do I achieve background task scheduling?</p>