静态类中的异步延迟初始化未编译

本文关键字:初始化 编译 延迟 异步 静态类 | 更新日期: 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 关键字。 没有thisstatic :)

删除 this 关键字,一切都会编译正常,因为 myClient 也是static .