我试图创建一个视图模型,其中一些属性从后台线程加载.
对于这项任务,我在NotifyTaskCompletion<T>
上找到了this old MSDN article by Stephen Cleary.第A Better Approach节中的代码列表"图4"看起来像这样:
public sealed class NotifyTaskCompletion<TResult> : INotifyPropertyChanged
{
public NotifyTaskCompletion(Task<TResult> task)
{
Task = task;
if (!task.IsCompleted) {
var _ = WatchTaskAsync(task);
}
}
private async Task WatchTaskAsync(Task task) {
[...]
}
[...]
}
现在我想知道--如果我有一个像WatchTaskAsync
这样的方法,我永远不想等待(not等待该任务本质上是整个课程的目的),那么首先创建方法async void
有什么区别吗?
我知道difference between await and discard,但在这个特定的上下文中,只有在我不想等待它完成的情况下才调用该方法,创建那个Task
对象只是为了每次丢弃它是没有意义的,不是吗?