title: Should I use Task.Run() for BackgroundService that does I/O
body: <p>I have an ASP.NET Core 5 API that needs to do some background tasks. These background tasks will run for the entirety of the applications life, and will be reading azure queues so spending a lot of time sitting doing nothing.</p>
  <p>I have read that for I/O you shouldn't use Task.Run() as it's inefficient, but if in my case I'm not waiting on an I/O call, I'm waiting on a background task that happens to do a lot of I/O calls, is that ok? It seems if I don't use Task.Run() then every time my background task gets something from the queue and so the code after await continues, then it will be blocking some main thread in ASP that spooled up the task in the first place.</p>