Каждый раз, когда у вашего приложения есть задачи, которые можно разделить на отдельные группы, он является кандидатом на многопоточность. Имейте в виду, что это опасная игра - для каждой статьи, которую вы можете найти о преимуществах, есть две о укушении многопоточной реализацией - она может создавать ошибки, которые возникают только в определенных конфигурациях (на компьютерах пользователей), или, что еще хуже, не может быть продублирован в отладчике, потому что достаточно замедлить выполнение, чтобы ошибка не появлялась (условия гонки печально известны этим поведением).
Помимо этого предупреждения, многопоточность может значительно повысить как реальную, так и воспринимаемую производительность вашего приложения. Они специфичны для .NET, но дают общий пример, объясняющий преимущества фоновых потоков и поддерживающий отзывчивость вашего пользовательского интерфейса: