国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Win8 > 正文

Windows 8應用開發之異步調用

2024-06-28 13:43:35
字體:
來源:轉載
供稿:網友

不論是桌面客戶端還是Web應用通常會出現處理時間較長的操作,為了在這段時間內不影響用戶與應用之間的交互體驗,開發人員通常會使用異步調用技術,使得比較復雜的邏輯操作由異步進行,用戶仍然可以繼續使用應用,不會有無響應的等待情況出現。

  本篇將通過一個簡單的實例演示如何在Windows 8 應用中使用異步編程。首先我們來編寫一個“Get Blogs”按鈕,點擊它可以從Windows Blog中獲取博客列表。當然獲取博客信息的過程是由異步進行的,這個過程中為了測試用戶仍然可以與應用交互,我們再設計一個“Change Text”用來修改waitingText的內容。

  代碼

  <StackPanel Orientation="Horizontal" Grid.Row="1">

  <StackPanel>

  <TextBlock x:Name="listTitle" Height="40" Width="200"

  Style="{StaticResource BasicTextStyle}"/>

  <ListView x:Name="blogList" ItemTemplate="{StaticResource listTemplate}"

  VerticalAlignment="Top" HorizontalAlignment="Left" Height="550"

  Margin="50,10,0,0" Width="650"/>

  </StackPanel>

  <StackPanel Orientation="Vertical" VerticalAlignment="Top">

  <TextBlock x:Name="waitingText" Height="40" Width="200"

  Style="{StaticResource BasicTextStyle}" />

  <Button x:Name="getBlogs" Content="Get Blogs" Width="150"

  Click="getBlogs_Click" />

  <Button x:Name="changeText" Content="Change Text" Margin="0,10,0,0"

  Width="150" Click="changeText_Click" />

  </StackPanel>

  </StackPanel>

  接下來為“Get Blogs”按鈕添加Click事件,getBlogs_Click與以往Click事件不同之處就在于多了一個async關鍵字,看到Async就說明下面的內容要通過異步方法來實現。方法中通過SyndicationClient.RetrieveFeedAsync獲取博客內容,并通過await操作符告知應用要調用異步操作,且不影響用戶正常交互。如果不使用的異步調用的話,用戶只能等待所有博客內容加載完成后,才能繼續使用該應用。

  PRivate async void getBlogs_Click(object sender, RoutedEventArgs e) {

  waitingText.Text = "Loading Blogs...";

  SyndicationClient client = new SyndicationClient();

  client.BypassCacheOnRetrieve = true;

  Uri feedUri = new Uri

  try

  {

  SyndicationFeed feed = await client.RetrieveFeedAsync(feedUri);

  ObservableCollection<BlogItem> blogData = new ObservableCollection<BlogItem>();

  listTitle.Text = feed.Title.Text;

  foreach (SyndicationItem item in feed.Items)

  { blogData.Add(new BlogItem()

  { Author = item.Authors[0].Name.ToString(),

  PubDate = item.PublishedDate.Year.ToString() + "/" +

  item.PublishedDate.Month.ToString() + "/" +

  item.PublishedDate.Day.ToString(),

  Title = item.Title.Text

  }); }

  blogList.ItemsSource = blogData;

  waitingText.Text = "Completed!";

  }

  catch (Exception ex)

  {

  waitingText.Text = "Can't load the page:" + ex.ToString(); } }

  演示

  運行程序點擊“Get Blogs”按鈕,現在應用已經通過異步方式獲取Blog內容,這是我們可以點擊“Change Text”來驗證一下用戶是否可以繼續使用應該的其他功能。

  點擊“Get Blogs”后會出現“Loading Blogs…”的字樣,說明此事異步調用已經啟動。

Windows 8應用開發之異步調用 CUOxin.COM

電腦常識

  在獲取到博客內容前點擊“Change Text”,剛才的文字會變為“Please Waiting…”,說明當異步調用時用戶仍然可以與應用進行交互。

image

  異步調用完成后,文字部分又被更新為“Completed!”。

image

  至此,關于異步調用的開發就完成了。本篇內容只是異步調用的一種類型,當然還有許多其他類型的API可以供大家使用,而且包含C#、VB、JS多種語言開發。

image


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 怀宁县| 土默特右旗| 宁国市| 和硕县| 如东县| 黄浦区| 北安市| 关岭| 通城县| 沈阳市| 常宁市| 安多县| 苏尼特左旗| 新绛县| 岫岩| 青铜峡市| 景谷| 北碚区| 吴江市| 维西| 葫芦岛市| 甘南县| 延川县| 肃宁县| 玛曲县| 安丘市| 瑞安市| 彰武县| 茶陵县| 兰西县| 棋牌| 西林县| 江门市| 贞丰县| 儋州市| 尼勒克县| 安远县| 通州区| 额敏县| 新晃| 临夏市|