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");
}