Я хочу вернуть Func в середине блока using. Стоит ли беспокоиться об утилизации до того, как пользователь запустит результат Func?
Пример кода:
private IDbContextTransaction _transaction;
public Func<Task> BeginTransaction()
{
Task lockDispose = CommitTransaction();
using (_transaction = _dbContext.Database.BeginTransaction())
{
return async() =>
{
await lockDispose;
};
Task.WaitAll(lockDispose); //This code is unreachable.
}
}
private async Task CommitTransaction()
{
_transaction.Commit();
await Task.CompletedTask;
}
Обратите внимание, что время выполнения результата Func зависит от пользователя этой службы.
Я проверил этот вопрос, и это не мой ответ.
BeginTransaction
? - person Theodor Zoulias   schedule 20.12.2020Func<Task>
возвращаемых значений имеет смысл или удобно. Если вы не хотите, чтобы они фиксировали транзакцию дважды, вы можете дать имTransaction
фасад сCommitTransaction
методом, который вызывает реальный базовыйTransaction.CommitTransaction
не более одного раза. - person Theodor Zoulias   schedule 21.12.2020