デスクトップクライアントであろうとWebアプリケーションであろうと、通常は処理時間が長く、この間にユーザーとアプリケーションの間の対話に影響を与えないために、開発者は通常非同期呼び出しを使用します。このテクノロジにより、より複雑な論理操作が非同期になり、ユーザーは応答を待たずにアプリケーションを引き続き使用できます。
この記事では、簡単な例を挙げて、Windows 8アプリケーションで非同期プログラミングを使用する方法を説明します。まず、[ブログを取得]ボタンを作成し、それをクリックしてWindowsブログからブログのリストを取得します。もちろん、ブログ情報を取得するプロセスは非同期的に実行されますこのプロセスでは、ユーザーをテストするために、アプリケーションはまだアプリケーションと対話できます。待機テキストの内容を変更する「テキストの変更」を設計します。
コード
< StackPanel Orientation ="水平" Grid.Row =" 1>
< StackPanel>
< TextBlock x:名前=" listTitle" Height ="; 40 "幅=" 200 "
スタイル=" {StaticResource BasicTextStyle} "/>;< ListView x:名前=" blogList "ItemTemplate =" {StaticResource listTemplate} "< Br> 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< br< br> > Style =" {StaticResource BasicTextStyle}>
< Button x:Name =" getBlogs"コンテンツ="ブログを取得" Width =" 150" Click =" getBlogs_Click" />
< Button x:Name =" changeText" Content ="テキストを変更"マージン= "0,10,0,0"
Width = "150" Click = "changeText_Click" />
< /StackPanel>
< /StackPanel>
次へClickイベント、getBlogs_Click、および前のClickイベントを追加するための[ブログを取得]ボタンがasyncキーワードとは異なります。次のコンテンツを非同期メソッドで実装する必要があることを示すには、Asyncを参照してください。このメソッドでは、ブログのコンテンツがSyndicationClient.RetrieveFeedAsyncを介して取得され、await演算子を使用して、ユーザーの通常の対話に影響を与えずに非同期操作を呼び出すようにアプリケーションに通知します。非同期呼び出しを使用しない場合、ユーザーはアプリの使用を続ける前にすべてのブログコンテンツが読み込まれるのを待つことしかできません。
private async void getBlogs_Click(object sender、RoutedEventArgs e){
waitingText.Text ="ブログを読み込んでいます...";
SyndicationClient client = new SyndicationClient();
client.BypassCacheOnRetrieve = True;
Uri feedUri = new Uri
try
{
SyndicationFeed feed = await client.RetrieveFeedAsync(feedUri);
ObservableCollection< BlogItem> blogData = new ObservableCollection< BlogItem>(); < Br> listTitle.Text = feed.Title.Text;
foreach(feed.Items内のSyndicationItem項目)
{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 ="完了!";
}
catch(Exception ex)
{
waitingText.Text ="ページを読み込めません:" + ex.ToString();}}
デモ
実行中クリック'ブログ&'を取得します。ボタン、そして今、非同期的に、我々は&'をクリックすることができ、コンテンツをブログアプリケーションによって得られた;テキスト&'を変更して、ユーザーがどうあるべき他の機能を使用し続けることができるかどうかを確認するために。
[ブログを取得]をクリックすると、[ブログを読み込んでいます]という単語が表示され、非同期呼び出しが開始されたことを示します。
ブログのコンテンツを取得する前に[テキストの変更]をクリックすると、テキストが[お待ちください…]に変わります。これは、非同期に呼び出された場合でもユーザーがアプリケーションとやり取りできることを示します。
非同期呼び出しが完了すると、テキスト部分が' Completed!'に更新されます。
これで非同期呼び出しの開発は完了です。この記事は単なる非同期呼び出しの一種です。もちろん、他にも多くの種類のAPIを使用できます。C#、VB、JSの多言語開発も含まれます。