Встречается на собеседованиях • сегодня
Если у тебя есть вызов отложенной задачи 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
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы