Shared Sub New()
Await setAllAccountsAsync()
'SetAllAccounts()
End Sub
这个作品
但是,
Shared async Sub New()
Await setAllAccountsAsync()
'SetAllAccounts()
End Sub
不是
Private Shared Async Sub SetAllAccounts()
Await setAllAccountsAsync()
End Sub
也不起作用
但是
Private Async Function initializeAsync() As Task
_marketid = Await CookieAwareWebClient.downloadString1Async("https://www.coinexchange.io/api/v1/getmarkets")
End Function
工作正常。
因此我们可以在异步中返回void,但不能在构造函数中这样做。为什么?这是真的吗?
注意:
我不希望它实际上是一个构造函数。注意它是共享的,而不是新的。我只希望一些代码运行一次。例如,在我的情况下,初始化器将在网上冲浪并找到所有交易对并将交易对存储在私有变量中。我希望在使用该类之前完成该操作。
setAllAccountsAsync的内容如下
for component in nx.connected_components(graph):
# Each component is the set of nodes
print(component)
# Filter all edges in graph: we keep only that are in the component
print(list(
filter(
lambda x: x[0] in component and x[1] in component,
graph.edges
)
))
答案 0 :(得分:1)
这是真的吗?
是的
为什么?
Async Sub
(或async void
)方法已添加到C#和VB中,以便事件处理程序可以是异步的。在所有其他情况下,您都应避免使用Async Sub
。具体来说,Async Sub
不是实现构造函数的有效方法。
构造函数不能异步,并且该语言很可能在可预见的将来保留该原理。如果您需要异步构造实例,则应使用工厂方法,即,针对您的类型Task(Of T)
返回T
的静态方法。我的blog post on async constructors中介绍了更多详细信息和替代方法。