🖥 Избегайте IHostedService до .NET 8, если можете, потому что у него есть проблема!
💡 В версиях .NET до 8 методы StartAsync реализаций IHostedService вызывались один за другим во время запуска приложения. Каждый метод StartAsync должен был быть завершен до того, как мог начаться следующий, что могло задержать запуск, если какая-либо служба долго инициализировалась. Представьте, что у вас есть задача, которая выполняется в течение пары минут. Это означает, что приложение не запустится, пока эта задача не будет завершена.
🌟 .NET 8 представляет решение с помощью свойства ServicesStartConcurrently в классе HostOptions. Теперь, когда службы запускаются одновременно, время запуска хоста сводится к длительности метода StartAsync самой медленной службы, а не к совокупному времени всех служб. Примечание: каждая служба запускается только после того, как предыдущая освобождает управление, достигнув своего первого оператора await в методе StartAsync.
🌟 Чтобы позволить следующей службе запускаться как можно быстрее, убедитесь, что StartAsync действительно асинхронный, и избегайте любых дорогостоящих операций до первого await!
@csharp_ci