这是代码段,我得到警告:
此异步方法缺少等待操作符,将同步运行。考虑使用await运算符来等待非阻塞调用。
    public async Task<ActionResult> CreateRequest([FromBody] DnsRecordDto RecordRequested)
    {
        var result = IsRecordRequestedNull()
    }
    public bool IsRecordRequestedNull(DnsRecordDto RecordRequested)
    {
        bool flag = false;
        if (RecordRequested == null)
        {
            flag = true;
            _commonRepository.SaveLogItem(Constants.TransactionFailedBadData, Constants.STARTING, transId, LogLevel.Trace);
        }
        return flag;
    }
我不确定如何解决此警告
我是否真的需要用async关键字修饰IsRecordRequestedNull并使其运行异步,因为我是从async方法调用此方法的?
在这种情况下,我应该忽略出现的警告吗?
Gab*_*uci 10
使用async关键字本身不会使方法异步运行。它仅允许使用await运算符。如果您不使用await,请不要使用async。
警告只是说:“您没有使用await,为什么要使用async?”
如果您没有使用或无法使用await,那么解决方法是删除async关键字:
public ActionResult CreateRequest([FromBody] DnsRecordDto RecordRequested)
{
    var result = IsRecordRequestedNull()
}
如果有该SaveLogItem方法的异步版本(SaveLogItemAsync也许?),那么您可以等待它并完成所有工作async:
public async Task<ActionResult> CreateRequest([FromBody] DnsRecordDto RecordRequested)
{
    var result = await IsRecordRequestedNull()
}
public async Task<bool> IsRecordRequestedNull(DnsRecordDto RecordRequested)
{
    bool flag = false;
    if (RecordRequested == null)
    {
        flag = true;
        await _commonRepository.SaveLogItemAsync(Constants.TransactionFailedBadData, Constants.STARTING, transId, LogLevel.Trace);
    }
    return flag;
}
但是我不知道该SaveLogItem方法的来源,所以我不能说是否有一个异步版本可供您使用。
如果这是您自己编写的方法,并且希望它异步运行,那么这就是您需要开始的地方。查看它在哪里执行任何I / O操作(读取/写入文件,发出网络请求等),并将其更改为使用async这些调用的版本(通常带有后缀“ Async”)并等待它们。然后,您可以将该方法以及所有调用该方法的方法更改为async。
Microsoft有一系列关于异步编程的写得很好的文章,您可能会从中受益:异步编程和异步等待