[英]Using async and tasks in C#
我正在嘗試創建一個看起來像這樣的方法
protected override Task
HandleRequirementAsync(AuthorizationHandlerContext context,
OperationAuthorizationRequirement requirement,
string resource)
{
if (context.User == null || resource == null)
{
return Task.FromResult(0);
}
var members = await TeamsGraph.GetTeamMembers(resource, context.User);
return Task.FromResult(0);
}
此方法給我一個錯誤,因為我有 await TeamsGraph,它需要將該方法標記為異步。 如果我將 async 添加到方法中,那么顯示 Task.FromResults(0) 的 2 行就會出錯。 我要覆蓋的底層方法需要該特定類型的返回。
我確定我遺漏了一些簡單的東西,但我還沒有對 Async Await 做很多事情,所以我正在尋找有關如何設置此方法的指導。
編輯
讓我們看看我是否可以涵蓋下面每個人的評論。
rmjoia - 如果我在 Task 前面添加 async 那么 2 個返回 Task.FromResult(0) 行是錯誤的。
Bradley Uffner - 我正在做的代碼來自 ASP.NET Core 的授權示例,它是預期返回的代碼。 有關示例,請參閱https://docs.microsoft.com/en-us/aspnet/core/security/authorization/secure-data 。
David - 在 await 行之后還有更多代碼可以檢查用戶是否是 TeamMember,為了簡單起見,我省略了它。
JSteward - 由於您是第一個提出此建議的人,所以您可以提交答案,我會接受。
您應該返回Task<int>
而不僅僅是Task
protected override async Task<int> HandleRequirementAsync(
AuthorizationHandlerContext context,
OperationAuthorizationRequirement requirement,
string resource)
{
if (context.User == null || resource == null)
{
return 0;
}
var members = await TeamsGraph.GetTeamMembersAsync(resource, context.User);
return 0;
}
你能做到這一點:
var members = TeamsGraph.GetTeamMembers(resource, context.User);
members.Wait();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.