async / await 非同期処理を使おう
はじめに
本日は、async & awaitを使用した非同期について以下に示します。
※ Xamarin.Forms
概要
最近の提供APIは、非同期処理必須で扱うことが必須で困ります(笑)
そんな訳で、今回はasync & awaitについて簡単に説明していきます。
非同期処理が主流になってきているのは、タッチ操作が当たり前になってきたからでしょうか。タッチ操作にて、待ち時間が発生すると体感上ストレスを感じます。だ・か・らこそ、同期ではなく、非同期処理なのでしょうね。
主な非同期処理
非同期処理において、Web アクセスやファイル処理に関わるAPIを使用するものであれば、ほぼ十中八九非同期概念が必須です。
async / await
async awaitの概念は、奥が深いので、他のブログやドキュメントを参考にした方がいいと思います。
簡単に非同期処理を書くための方法としては、以下の2点のどちらかを使用することで可能です。
- 関数定義によるasync宣言
- 関数内にてラムダ式によるasync宣言
関数定義によるasync宣言
関数定義によるasync宣言のパターン以下
void型(戻り値なし)のasync / await
private async void AscyncMetohd()
{await ...
}
Task型のasync / await
※Task型もreturnで戻り値を指定しなくてよい
private async Task AscyncMetohd()
{
await ...
}
Task<T>型のasync / await
private async Task<int> AscyncMetohd()
{int nCount = 5;
await ...return nCount;
}
関数内にてラムダ式によるasync宣言
関数内にてラムダ式によるasync宣言のパターン以下
筆者は、ほぼこの形式で書きます(笑)
関数には、async宣言を入れずに、関数内にて、Taskによるラムダ式(=>)による書き方で非同期を実装します。
void AscyncMetohd()
{
var task = Task.Run(async () =>{
await ...
});}
余談
async / awaitの知識だけではなく、非同期を扱うならばTaskの概念も必要になると思います。