簡體   English   中英

使用 C# 中的委托創建異步等待 function

[英]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(...);
}

我得到的兩個錯誤是:

  1. The call is ambiguous between the following methods or properties: 'GetUserFromAccessTokenFunction' and 'GetUserFromAccessTokenFunction'

  2. The return type of an async method must be void, Task or Task<T>

如何修復我的代表聲明以滿足我的需求?

  1. async方法中,您不能使用outref參數, 請閱讀為什么不能使用
  2. asyn方法,返回特定的異步返回類型,例如TaskTask<T>voidIAsyncEnumerable<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM