Можно через async/await реализовать, если задача представляет из себя ввод-вывод данных (веб запрос, сохранение, копирование файлов, работа с фтп), также можно сделать Task, если задача не длительная или сделать thread, если задача длительная. Но реализовать ты сможешь это все привязав вручную к каждому действию и выполняться они будут параллельно твоим текущим действиям. Плюс при любой ошибке выполнения в параллельном потоке упадет вся зенка, если не будешь правильно обрабатывать исключения и при необходимости пробрасывать их в основной поток
P.S. подробнее на MSDN, так как тема довольно обширная и сложная.