title: What is the simplest way to run a single background task from a controller in .NET Core?
body: <p>I have an ASP.NET Core web app, with WebAPI controllers.  All I am trying to do is, in some of the controllers, be able to kick off a process that would run in the background, but the controller should go ahead and return before that process is done.  I don't want the consumers of the service to have to wait for this job to finish.  </p>
  
  <p>I have seen all of the posts about IHostedService and BackgroundService, but none of them seem to be what I want.  Also, all these examples show you how to set things up, but not how to actually call it, or I am not understanding some of it.  </p>
  
  <p>I tried these, but when you register an IHostedService in Startup, it runs immediately at that point in time.  This is not what I want.  I don't want to run the task at startup, I want to be able to call it from a controller when it needs to.  Also, I may have several different ones, so just registering services.AddHostedService() won't work because I might have a MyServiceB and MyServiceC, so how do I get the right one from the controller (I can't just inject IHostedService)?  </p>
  
  <p>Ultimately, everything I have seen has been a huge, convoluted mess of code for something that seems like it should be such a simple thing to do.  What am I missing?  </p>