Как Task понимает, что он уже выполнен, если поток освобожден?
К примеру, если я асинхронно обращусь в БД с запросом. Как Task должна понять, что он уже выполнил и поменял свой статус? Правильно понимаю ли я, что когда я обращаюсь к БД асинхронно, по сути никакой поток его не ждет или освобождается только вызывающий поток, а за ним есть дополнительный поток, который ждет ответа от БД?