C# 将值发送到另一个ViewModel和async

C# 将值发送到另一个ViewModel和async,c#,wpf,mvvm,C#,Wpf,Mvvm,以及: 当我看到调试输出时 public XViewModel(int UserID) { GetUserInfo(); EmployeListBox = new[] { new EmployeListBoxItems(PackIconKind.UndoVariant, "Listing", new YWindow( new YViewModel(Code_abc)) ), }; Console.WriteLine("3"); }

以及:

当我看到调试输出时

public XViewModel(int UserID)
{  
    GetUserInfo();
    EmployeListBox = new[]
    {
        new EmployeListBoxItems(PackIconKind.UndoVariant, "Listing", new YWindow( new YViewModel(Code_abc)) ),
    };
    Console.WriteLine("3");   
}
我不确定这是否与异步有关,但根据调试输出,我正在创建表单及其ViewModel,然后获取查询结果,因此基本上我发送的
code\u abc
是作为0而不是实际值发送的


如果我先调用
GetUserInfo
,为什么会发生这种情况?

因为您没有等待
GetUserInfo()
它在将“1”打印到控制台之前返回

要使您能够
等待
该方法,应将其返回类型从
void
更改为
Task

3
1
但即使如此,您也无法像这样等待构造函数发出的指令:

public async Task GetUserInfo()
您不应该从构造函数调用
async
方法

如果您从标记为
async
的方法中这样调用它,您应该会看到在“3”之前将“1”打印到控制台,不过:


然而,列表框应该在构造函数中,因此我应该如何使用GetUserInfo()获取code_abc的值,因为从我看到的情况来看,我在GetUserInfo获取code_abc之前创建了YWindow和YViewModel。例如,如果我在GetUserInfo中设置EmployeeListBox,那么该值将通过,但是GUI不会显示列表框。
public async Task GetUserInfo()
await GetUserInfo();
...
Console.WriteLine("3"); 
public async Task SomeAsyncMethod (int UserID)
{
    await GetUserInfo();
    EmployeListBox = new[]
    {
        new EmployeListBoxItems(PackIconKind.UndoVariant, "Listing", new YWindow( new YViewModel(Code_abc)) ),
    };
    Console.WriteLine("3");
}