C#异步方法调用异步方法

时间:2019-03-05 11:23:26

标签: c# async-await asp.net-core-mvc asp.net-core-2.1

这次我有一个关于C#中异步调用的问题。

所以我有一台带有ASP.Net Core 2.1 MVC的服务器。

在此服务器上,我有以下方法:

public async Task<IdentityResult> UpdateAsync(TEntity entity)
{
    var replaceResult = await _collection.ReplaceOneAsync(x => x.Id == entity.Id, entity);

    if(replaceResult.ModifiedCount == 0)
    {
        return IdentityResult.Failed();
    }

    return IdentityResult.Success;
}

此方法由另一种方法(UpdateLicenseAsync)调用,而该方法的调用方式类似于

var identityResult = await UpdateLicenseAsync(parameters)

以下是我的问题,这两种UpdateLicenseAsync实现之间的区别是什么? 版本1:

public Task<IdentityResult> UpdateLicenseAsync<TLicense>(TTenant tenant, TLicense license, DateTime expirationDate, bool multiTenants) where TLicense : LicenseEntity
{
    var tenantLicense = tenant.TenantLicenses.Find(x => x.LicenseKey == license.Key);
    if (tenantLicense == null) return Task.FromResult(IdentityResult.Failed(new IdentityError { Code = IdentityResultErrorCodesConstants.TENANT_LICENSE_DOES_NOT_EXISTS }));

    // ensure Time of date is 00:00 by using only Date part
    tenantLicense.ExpirationDate = expirationDate.Date;
    tenantLicense.MultiTenant = multiTenants;

    return _collection.UpdateAsync(tenant);
}

版本2:

public async Task<IdentityResult> UpdateLicenseAsync<TLicense>(TTenant tenant, TLicense license, DateTime expirationDate, bool multiTenants) where TLicense : LicenseEntity
{
    var tenantLicense = tenant.TenantLicenses.Find(x => x.LicenseKey == license.Key);
    if (tenantLicense == null) return IdentityResult.Failed(new IdentityError { Code = IdentityResultErrorCodesConstants.TENANT_LICENSE_DOES_NOT_EXISTS });

    // ensure Time of date is 00:00 by using only Date part
    tenantLicense.ExpirationDate = expirationDate.Date;
    tenantLicense.MultiTenant = multiTenants;

    return await _collection.UpdateAsync(tenant);
}

他们在做同样的工作吗?其中一个比另一个“更快”吗?一个版本比另一个版本好吗?

在此先感谢您的帮助:)

0 个答案:

没有答案