gpt4 book ai didi

c# - 同步实现异步方法

转载 作者:行者123 更新时间:2023-11-30 16:47:10 28 4
gpt4 key购买 nike

我有一个接口(interface)强制我实现(异步)任务:

namespace Microsoft.Owin.Security.Infrastructure
{
public interface IAuthenticationTokenProvider
{
..
Task CreateAsync(AuthenticationTokenCreateContext context);
..
}
}

我想实现这个方法,但我没有等待任何东西。虽然我必须等待某些东西或返回一些任务,否则我的代码无法编译。:

public class MyImplementation: IAuthenticationTokenProvider
{
public async Task CreateAsync(AuthenticationTokenCreateContext context)
{
/// do something synchronously.

await something here? ??
}
}

我的问题是:如何在不异步执行某些操作的情况下实现此方法?我已经找到了几个解决方案(await task.Yield()await Task.Run(() => {})),但我不能不完全理解什么是正确的实现及其原因。

最佳答案

无需等待,直接实现方法:

public async Task<Foo> GetFooAsync()
{
return new Foo();
}

即使您没有等待任何东西也没关系。异步方法不需要等待任何事情(尽管编译器会警告您您没有等待任何事情)。

如果您不想要 aysnc 方法的开销(与异步“状态机”相关的成本可能是不可取的),您可以

public Task<Foo> GetFooAsync()
{
return Task.FromResult(new Foo());
}

关于c# - 同步实现异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39894210/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com