Windows 8应用开发之异步调用

清风维普

清风维普

2016-02-19 23:59

下面,图老师小编带您去了解一下Windows 8应用开发之异步调用,生活就是不断的发现新事物,get新技能~

不论是桌面客户端还是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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/diannaorumen/)

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/diannaorumen/)

/StackPanel

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/diannaorumen/)

接下来为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);

ObservableCollectionBlogItem blogData = new ObservableCollectionBlogItem();

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!";

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/diannaorumen/)

}

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

展开更多 50%)
分享

猜你喜欢

Windows 8应用开发之异步调用

电脑入门
Windows 8应用开发之异步调用

关于webservice的异步调用简单实例

电脑网络
关于webservice的异步调用简单实例

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

使用xmlHttp结合ASP实现网页的异步调用

Web开发
使用xmlHttp结合ASP实现网页的异步调用

使用xmlHttp结合ASP 实现网页的异步调用

ASP
使用xmlHttp结合ASP 实现网页的异步调用

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Windows 8如何调用Tablet输入面板

电脑入门
Windows 8如何调用Tablet输入面板

200开发技术年度综述之Windows开发

编程语言 网络编程
200开发技术年度综述之Windows开发

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

CSS教程:数字和字母将容器撑大问题解决

CSS教程:数字和字母将容器撑大问题解决

CSS Sprites优化网页代码的方法

CSS Sprites优化网页代码的方法
下拉加载更多内容 ↓