異步編程

異步方法不用等任務結束後才返回。異步編程可以避免界面卡死的問題,但是會導致編寫“等待一個異步操作執行完成再執行一段代碼”的程序很麻煩

異步方法返回Task或者IAsyncOperation對象(鼠標懸停會顯示“可等待”),一般以Async結尾,異步方法不會等結束才返回。

在.net4.5中引入了async、await關鍵字,可以在異步方法調用前加入await關鍵字,這樣方法中這一行之後的代碼都將在異步方法執行完成後才執行。注意:一個方法中如果有await,則必須標註爲async。

可以直接在await前聲明變量,當異步方法執行完成後把執行結果返回設置給變量,一般用var自動推斷。

WinRT中所有執行時間可能會較長的操作都被設置爲異步方法。

MessageDialog msgDlg = new MessageDialog("是否刪除?");
msgDlg.Commands.Add(new UICommand("是"){ Id = 1});
msgDlg.Commands.Add(new UICommand("否"){ Id = 2});
var result = await msgDlg.ShowAsync();
if((int)result.Id==1)
{
}
else if((int)result.Id==2)
{
}

IO操作

Package.Current.InstalledLocation來獲得程序的安裝文件夾,GetFolderAsync、GetFilesAsync遍歷文件夾。
StorageFolder installFolder = Package.Current.InstalledLocation;
var imgFolder = await installFolder,GetFolderAsync("Images");
var files = await imgFolder.GetFilesAsync();
List<string> lists = new List<string>();
foreach(var file in files)
{
	stirng path = "ms-appx:///Iamges/" + file.Name;
	list.Add(path);
}
fvImages.ItemsSource = list;//fvImages是一個flipView控件

HttpClient

HttpClient httpClient = new HttpClient();
var result = await httpClient.GetStringAsync("http://www.baidu.com");


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章