繁体   English   中英

为NonAsync方法创建异步包装器

[英]Create Async Wrapper for a NonAsync Method

我正在为Asp.Net Identity UserStore编写一个中间件,在该中间件中,调用者希望有一个Task,而要调用的方法是NonAsynch。

Task IUserSecurityStampStore<T, string>.SetSecurityStampAsync(T user, string stamp)
{


    var res = Utility.SetSecurityStamp(user, stamp); // needs to be called as Async

    var identityUser = ToIdentityUser(res);

    SetApplicationUser(user, identityUser);

    return ??? ; // How do i get a task to return here ?

}

我该如何退还任务并盖章? 尝试了Task.FromResult但是它说只允许一个类型参数。

因此您的代码可能会变成这样:

async Task IUserSecurityStampStore<T, string>.SetSecurityStampAsync(T user, string stamp)
{
    var res = await Task.Run(() => Utility.SetSecurityStamp(user, stamp));
    var identityUser = ToIdentityUser(res);
    SetApplicationUser(user, identityUser);
}

或者,您可以只使用Task.FromResult使您的方法可以等待:

async Task IUserSecurityStampStore<T, string>.SetSecurityStampAsync(T user, string stamp)
{
    var res = Utility.SetSecurityStamp(user, stamp);
    var identityUser = ToIdentityUser(res);
    SetApplicationUser(user, identityUser);

    await Task.FromResult(0);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM