在标题中,我用abstract void
覆盖override async void
方法,但我不确定当通过基类调用方法时会发生什么,因为我无法放置{ {1}}那里。
线程是否会挂起,直到任务完成,或者表现得像await
那样?
我已经通过其他答案发现我应该使用await
作为返回值来使所有代码更清晰,但我想知道是否还存在行为差异。
为清晰起见,有些代码:
Task
答案 0 :(得分:0)
由于该方法返回void
,所以没有任何方法调用该方法(包括基类)可以await
完成。您可以在await
方法中自由使用async void
,但是await
对其没有任何调用。
基本上,您正在生成一个方法,如果其实现未被阻塞,该方法将立即返回,并且调用方法将在对重写方法的调用之后立即执行代码。自void
以来,该方法及其副作用已经引起人们的注意,并且一发不可收拾。这意味着调用者不能依赖于该方法的完成,即不能依赖于该方法打算完成的任何操作。
注意:此答案是通过评论提供的。我为后代和answered
标记而写。