在 C# 中的类构造函数中调用异步方法 [重复]

Posted

技术标签:

【中文标题】在 C# 中的类构造函数中调用异步方法 [重复]【英文标题】:Calling Async method in class constructor in C# [duplicate] 【发布时间】:2015-05-26 19:44:31 【问题描述】:

目前我正在使用 c# 开发一个通用应用程序。

在应用程序中,我使用 sqlite 作为数据库,您现在可以使用它具有异步方法。

我有一个带有一些 null 属性的类,我将使用从 db 获取的数据填充它们,但它应该完全在类构造函数中完成。

问题是不允许使用异步方法,所以我尝试创建一个新的异步方法并使用sqlite方法并在其中填充属性以在构造函数中同步调用它,但正如预期的那样它不能很好地工作。

如何在类构造函数中使用异步方法从数据库中获取数据并在类构造函数中填充类属性?

更新:请注意,我不是在问是否可以完成,我想在构建类时使用来自 db 的数据初始化我的类变量

【问题讨论】:

向我们展示您目前拥有的代码。你收到错误信息了吗?这是什么? 不,我没有收到错误,实际上我什么也没收到或为空 【参考方案1】:

不要那样做

构造函数应该就是:构造函数。将复杂的初始化移动到初始化方法。

构造函数无法优雅地失败,所以不要在其中做任何复杂、长时间运行或脆弱的事情。

【讨论】:

@RobertHarvey:感谢您的链接!我仍然认为这是一个坏主意;) A.Lowe:亲爱的我已经提到我已经完成了你的建议,但它没有按预期工作 @RaminMT:我认为您误解了:我建议您不要从构造函数中这样做 我明白你的意思,但我认为这就是我们所说的“构造”!!! @RaminMT:构造函数的目的是创建对象;简单的初始化是可以的,因为它不会失败。不要在构造函数中做任何可能失败的事情,因为没有办法恢复。

以上是关于在 C# 中的类构造函数中调用异步方法 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

构造函数和析构函数中的虚函数调用[重复]

php中的构造函数与析构函数(魔术方法)

php面向对象构造函数,析构函数

c# 中的类和构造函数在不同程序集中的 c# 中的默认访问说明符是啥 [重复]

PHP构造函数和析构函数

从构造函数调用的异步方法[重复]