Встречается на собеседованиях • сегодня

Если у тебя есть вызов отложенной задачи Task.Delay, будет ли она выполняться в той же транзакции, в которой ее вызвали

Нет, задача, созданная с помощью Task.Delay, не будет выполняться в той же транзакции, в которой ее вызвали. Task.Delay создает таймер, который срабатывает асинхронно через указанное время, и выполнение продолжается в другом контексте синхронизации (например, в пуле потоков). Транзакции в .NET не распространяются автоматически на асинхронные операции.

Пример:

csharp
using (var scope = new TransactionScope())
{
    Console.WriteLine("Transaction ID: " + Transaction.Current.TransactionInformation.LocalIdentifier);
    await Task.Delay(1000); // Транзакция здесь уже не активна
    Console.WriteLine("After delay: " + (Transaction.Current?.TransactionInformation.LocalIdentifier ?? "null"));
}

Вывод:

text
Transaction ID: some-guid
After delay: null
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы