我有一个类示例,可以在创建时从互联网上提取多个信息。
public class Example
{
string information;
public Example()
{
//Pull information
}
}
现在我想让Example变得等待,因为在创建之后继续创建部分之前创建Example非常重要。
public async void SetupSomething()
{
Example ex = new Example();
await ex;
// Do something with ex
}
我该怎么做?
答案 0 :(得分:1)
你可以这样做,但我认为这不是一个好方法,因为在开始使用实例之前没有任何强制await
。
我认为一个好主意是创建创建对象的静态异步方法。类似的东西:
class Example
{
private Example()
{
}
private async Task InitializeAsync()
{
// get the required data asynchronously here
}
public static async Task<Example> CreateAsync()
{
var result = new Example();
await result.InitializeAsync();
return resul;
}
}
答案 1 :(得分:0)
好吧,构造函数应该等到它完成后才能完成。毕竟,用于创建它的线程来自调用它的方法。
然而,我认为非常重要的是告诉我们构造函数正在做什么。很有可能它会调用某个地方启动另一个线程并且不等待它解决,使得构造函数返回而没有你正在谈论的所有“信息”。