欢迎登陆真网站,您的到来是我们的荣幸。 登陆 注册 忘记密码? ☆设为首页 △加入收藏
欢迎加入真幸福QQ群
电脑知识: 基础知识 网络技术 操作系统 办公软件 电脑维修 电脑安全 windows7 windows8 windows10 服务器教程 平板电脑 视频播放教程 网络应用 互联网 工具软件 浏览器教程 QQ技巧 输入法教程 影视制作 YY教程 wps教程 word教程 Excel教程 PowerPoint
云南西双版纳特产小花糯玉米真空包装


Win7系统运行速度变慢怎么办?提高运行速度的几个小方法
解决番茄花园win7旗舰版系统开机提示“没有找到comres.dll”的方法
联想笔记本win7系统如何在BIOS中开启/关闭指纹识别功能
win8随时随地指触记事应用
中关村win7 64位系统下更改用户账户名称的方法
Win7纯净版系统禁用USB选项性暂停设置的方法
win8操作系统消息提醒设置教程
Win7纯净版系统禁用USB选项性暂停设置的方法
详解Win8系统获取授权与降级策略
Windows7系统中火狐浏览器设置(更改)主页的方法
Windows 8应用开发之异步调用
【 来源:网络 】【 点击:1 】 【 发布时间:2017_03_03 08:59:59 】

 不论是桌面客户端还是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应用开发之异步调用 三联

 

电脑常识

  在获取到博客内容前点击“Change Text”,刚才的文字会变为“Please Waiting…”,说明当异步调用时用户仍然可以与应用进行交互。

image

  异步调用完成后,文字部分又被更新为“Completed!”。

image

  至此,关于异步调用的开发就完成了。本篇内容只是异步调用的一种类型,当然还有许多其他类型的API可以供大家使用,而且包含C#、VB、JS多种语言开发。

image

 

本网站由川南居提供技术支持,fkzxf版权所有 浙ICP备12031891号
淳安分站 淳安分站