静态类中的异步延迟初始化未编译
本文关键字:初始化 编译 延迟 异步 静态类 | 更新日期: 2023-09-27 18:33:13
我正在尝试根据Stephen Cleary的博客文章(http://blog.stephencleary.com/2012/08/asynchronous-lazy-initialization.html)将异步延迟初始化合并到静态类中:
internal static class ThirdPartyCommunicator
{
private static readonly AsyncLazy<IClient> myClient = new AsyncLazy<IClient>
(
async () => { var client = await CreateClient(); return client; }
);
private static async Task<IClient> CreateClient()
{
var identity = service.GetIdentity();
await identity.AuthenticationAsync();
return identity.Client();
}
internal static async void DoWork()
{
var client = await this.myClient; //compilation error
....
在DoWork()
,我收到错误:
无法访问非静态上下文中的静态字段"myClient"
我不清楚是什么非静态上下文导致了这个问题。
static
方法在任何意义上都不能使用 this
关键字。 没有this
时static
:)
删除 this
关键字,一切都会编译正常,因为 myClient 也是static
.