[英]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
但是它说只允许一个类型参数。
Utility.SetSecurityStamp
方法的调用包装到Task
中 因此您的代码可能会变成这样:
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.