[英]create an async await function using delegates in C#
我有以下委托,我需要讓他們async await
。
我的代表:
public delegate bool GetUserFromAccessTokenHandler(string token, out User user);
public GetUserFromAccessTokenHandler GetUserFromAccessToken;
public FunctionalOperations(IUnitOfWork unitOfWork)
{
GetUserFromAccessToken = new GetUserFromAccessTokenHandler(GetUserFromAccessTokenFunction);
_unitOfWork = unitOfWork;
}
現在我需要將異步添加到方法 GetUserFromAccessTokenFunction 但發生錯誤:
private async bool GetUserFromAccessTokenFunction (string token, out User user)
{
var x = await _unitOfWork.User.Get(...);
}
我得到的兩個錯誤是:
The call is ambiguous between the following methods or properties: 'GetUserFromAccessTokenFunction' and 'GetUserFromAccessTokenFunction'
The return type of an async method must be void, Task or Task<T>
如何修復我的代表聲明以滿足我的需求?
async
方法中,您不能使用out
或ref
參數, 請閱讀為什么不能使用asyn
方法,返回特定的異步返回類型,例如Task
、 Task<T>
、 void
、 IAsyncEnumerable<T>
您的代碼應如下所示
using System.Threading.Tasks; // Task Namespace
//...
public delegate Task<User> GetUserFromAccessTokenHandler(string token);
public GetUserFromAccessTokenHandler GetUserFromAccessToken;
public FunctionalOperations(IUnitOfWork unitOfWork)
{
GetUserFromAccessToken = new GetUserFromAccessTokenHandler(GetUserFromAccessTokenFunction);
_unitOfWork = unitOfWork;
}
private async Task<User> GetUserFromAccessTokenFunction (string token)
{
var x = await _unitOfWork.User.Get(...);
// ...
return new User();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.