在此函数中放置等待的位置

本文关键字:等待 位置 函数 | 更新日期: 2023-09-27 18:25:22

 protected override async void OnNavigatedTo(NavigationEventArgs e)
 {
       base.OnNavigatedTo(e);
       var content = (Content) Application.Current.Resources["NavigationParam"];
       titleName.Text = content.title;
       var uri = new Uri(content.url, UriKind.Absolute);
       imageShow.Source = new BitmapImage(uri);
 }

严重性代码描述项目文件行列警告 CS1998 此 异步方法缺少"await"运算符,将同步运行。 考虑使用"await"运算符来等待非阻塞 API 调用, 或"await Task.Run(...("在后台执行 CPU 密集型工作 线。 ImageParser C:''Users''Johny''Documents''Visual Studio 2015''Projects''ImageParser''ImdbSample''ItemView.xaml.cs 26 41

在此函数中放置等待的位置

您不会在方法主体中等待任何异步操作(通过使用 await 运算符(,因此方法定义中的 async 关键字不是必需的。只需删除它,警告就会消失。

这不会更改方法的语义。正如警告消息明确指出的那样,无论如何它已经同步运行。

BitmapImage自动异步下载图像 - 您无需执行任何额外的操作。删除async关键字,警告将消失。

如果您绝对必须等待图像下载才能执行其他任何操作,这里有一些代码可以向您展示如何操作。

// create a task source that we can await on later
TaskCompletionSource<bool> taskSource = new TaskCompletionSource<bool>();
titleName.Text = content.title;
// create an image
var image = new System.Windows.Media.Imaging.BitmapImage();
// subscribe to the images download complete events - set results to true or false depending on if the download finish ok.
image.DownloadCompleted += (sender, args) => taskSource.TrySetResult(true);
                image.DownloadFailed += (sender, args) => taskSource.TrySetResult(false);
// set the uri to start the download
image.UriSource = new Uri(content.url, UriKind.Absolute);
// await the task to extract the result    
bool wasDownloadSuccessful = await taskSource.Task;