在此函数中放置等待的位置
本文关键字:等待 位置 函数 | 更新日期: 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;