私はXamarinでC#でiOSアプリケーションを開発していますが、非同期モードで呼び出す必要があるメソッドがあります。私はthisガイドラインを持っていますが、それは私のニーズとは異なると思われます。Xamarin.iOS非同期待機メソッドが動作しない
私はこれを実行しようとしました:
var tasks = new List<Task<UIImage>>();
var imageUrls = new[] {
"http://www.mySite/images/02.jpg",
"http://www.mySite/images/03.jpg",
"http://www.mySite/images/04.jpg",
"http://www.mySite/images/05.jpg",
"http://www.mySite/images/06.jpg",
"http://www.mySite/images/07.jpg",
"http://www.mySite/images/08.jpg",
"http://www.mySite/images/09.jpg",
"http://www.mySite/images/10.jpg",
"http://www.mySite/images/11.jpg",
"http://www.mySite/images/12.jpg",
"http://www.mySite/images/3.jpg",
"http://www.mySite/images/14.jpg",
"http://www.mySite/images/15.jpg"
};
foreach (var imageUrl in imageUrls)
{
var task = getImageFromUrl(imageUrl);
tasks.Add(task);
}
var images = await Task.WhenAll(tasks);
と呼ばれる方法がある:
async Task<UIImage> getImageFromUrl(string uri)
{
using (var url = new NSUrl(uri))
using (var data = NSData.FromUrl(url))
return UIImage.LoadFromData(data);
}
同期して動作し、私に次の警告を示しています。私は何
Warning CS1998: Async block lacks `await' operator and will run synchronously (CS1998)
を私のコードには欠けていますか? getImageFromUrl()メソッドが非同期プロパティを失っているようです。 URL asynchrouslyから画像を読み込む別の方法はありますか?
(DBアクセス、ネットワーク呼び出しなど)asyncを指定する必要があるビットを表示するようにコードを更新してください:あなたは非同期にデータをロードしてから、このバイト配列からイメージを作成するために
HttpClient.GetByteArrayAsync
を使用して検討することができます。 – Jason@ Jasonちょうど編集しました.... – pasluc74669
これらの操作のどれも非同期です。必要に応じて別のスレッドで手動で実行できますが、本質的に非同期操作ではありません。 – Jason