访问两个解决方案(C#、异步)之间的列表项

Access to list items between two solutions (C#, Async)

我有两个解决方案:

Sol1:

 public class Sol1{

  internal override IList<MenuItem> MenuItems
  {
   //some code
   GetItems();

   return items;
  }

  internal override async void GetItems()
  {
    //code
    //async method
    //code
    //async method
  }
 }

解决方案一是创建第一个一级菜单。然后进入解决方案 2,在创建拳头级菜单后我想访问这个“items”。

Sol2:

public class Sol2{

  private async Task SecondLev{
     //some code
   Sol1 sol1 = new Sol1();
   var test = sol1.items;
  }
}

但它们总是空的。我不想再 运行 一次方法 MenuItems,但可以访问这些项目。

它们是空的,因为您不等待异步操作。

您的代码应如下所示:

    public class Sol1
    {
        internal IList<MenuItem> MenuItems { get; private set; }

        internal async Task GetItems()
        {
            // some async code
            // ...
            MenuItems = someResult;
        }
    }

    public class Sol2
    {
        private async Task SecondLevel()
        {
            //some code
            Sol1 sol1 = new Sol1();
            await sol1.GetItems();
            var test = sol1.MenuItems;
        }
    }

几点注意事项:

  1. 如果它们不是事件处理程序,请不要创建 async void 方法,使用 async Task 代替。
  2. 你不能有异步属性,只有异步方法。