UI 在 xamarin 表单的刷新 ListView 期间被阻止

The UI is blocked during refresh ListView for xamarin form

为什么当我使用 async 请求从服务器加载数据时 UI 被阻止,如下所示:

public ObservableCollection<VideoFile> VideoFiles { get; private set; } = new ObservableCollection<VideoFile>();

private void LoadVideoFiles(string categoryId = "*", int page = 1)
{
    _videoFiles = NotifyTask.Create(_videoManager.GetVideoFilesAsync(_videoFileSearchParam));
    _videoFiles.PropertyChanged -= VideoFilesPropertyChanged;
    _videoFiles.PropertyChanged += VideoFilesPropertyChanged;
}

private void VideoFilesPropertyChanged(object sender, PropertyChangedEventArgs propertyName)
{
    foreach (var videoFile in ((NotifyTask<List<VideoFile>>)sender).Result)
    {
        VideoFiles.Add(videoFile);
    }
}

UI 被阻止,因为您正在进行的调用是同步的,因此应用程序将等待整个线程,直到此调用结束。 如果你想让 UI 同时响应,你应该使用 async 关键字使方法异步。 这样它将让方法 运行,而所有其他 UI 元素将保持响应。你可以阅读更多here