【发布时间】:2018-07-04 02:19:53
【问题描述】:
我有一个带有这个构造函数的类:
MyType01 _myData01;
MyType02 _myData02;
MyType03 _myData03;
public MyClass()
{
getDataFromDataBase();
//Code that use the data from database.
string myText = _myData02.Property1; //error because my data02 is null.
}
private async void getDataFromDataBase()
{
await myMethod01Async();
await myMethod02Async();
await myMethod03Async();
}
此代码在本地数据库中工作,但是当我连接到远程计算机中的数据库时,我收到超时错误和协议 2504。
如果我调试,我会注意到,如果我在运行myMethod01Asyc() 的行中设置断点并按“F5”,则下一行代码是构造函数中尝试使用数据的下一行在_myData02变量中,但它仍然是null,因为它没有完成方法getMyData02Async()。
也许我错了,但我认为使用 await 代码等到方法完成,但在我的情况下它不是行为,因为它继续构造函数中的下一行。
那么我怎么能在构造函数中等待getDataFromDataBase() 完成才能使用我需要的数据呢?
【问题讨论】:
标签: c# asynchronous task