小编Sil*_*gel的帖子

如何在不运行任务的情况下将Action转换为Func <Task>?

我的代码可以按照需要精确工作.但是,我们的公司构建服务器拒绝任何具有编译器警告的签入.

对于具有Action to Func转换的Action构造函数,显示以下警告(正如预期),因为我没有使用await语句.

这种异步方法缺少"等待"运算符并将同步运行.考虑使用'await'运算符等待非阻塞API调用,或'await Task.Run(...)'在后台线程上执行CPU绑定工作.

public class TransactionOperation
{
    private readonly Func<Task> _operation;
    private readonly Func<Task> _rollback;

    public OperationStatus Status { get; private set; }

    public TransactionOperation(Func<Task> operation, Func<Task> rollback)
    {
        _operation = operation;
        _rollback = rollback;
        Status = OperationStatus.NotStarted;
    }

    public TransactionOperation(Action operation, Action rollback)
    {
        _operation = async () => operation.Invoke();
        _rollback = async () => rollback.Invoke();
        Status = OperationStatus.NotStarted;
    }

    public async Task Invoke()
    {
        try
        {
            Status = OperationStatus.InProcess;
            await _operation.Invoke();
            Status = OperationStatus.Completed;
        } …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous async-await

9
推荐指数
1
解决办法
3907
查看次数

标签 统计

async-await ×1

asynchronous ×1

c# ×1