Data Access - Perform I/O operations

You have built a complex calculation algorithm. It takes quite some time to complete and you want to make sure that your application remains responsive. What do you do?

Use async/await.
Run the code synchronously.
Use Task.Run.
Use a BackgroundWorker.