今回は、「非同期処理」について解説していこうと思います。
なじみのない単語に聞こえる方もいらっしゃるかと思いますが、どうぞ最後まで読んで理解してもらえると幸いです。
非同期処理って何?.
非同期処理とは、処理される順番が関係ないロジックになります。
本来ロジックは、記述された順番によって処理されます。
int a;
int b;
a = 1;
b = 2;
このように記述されていた場合は、「aの宣言」「bの宣言」「aの値代入」「bの値代入」の順番で処理されます。
では次のようにした場合はどうでしょうか。
int a;
int b;
a = 1; –この処理を非同期にする
b = 2;
こうすると、「aの値代入」の処理完了を待たずに「bの値代入」が実行されるため、同時に実行されている状態になります。
「aの値代入」に時間がかかった場合、「bの値代入」が先に完了することもあり得ます。
これが非同期処理です。
どういった時に非同期にする?.
ではどう言った場面で使用するのでしょうか。
それはズバリ時間がかかる処理を非同期にし、待ち状態を解消したい場面で使用します。
例えば、「外部のサービスに接続するとき」は非同期にすることがあります。
具体的にはネットワーク外のAPIへのアクセス、データベースサーバなど別機器へのアクセスなどが該当します。
接続設定のミスでつながらない場合も、システムは一定時間接続を試みます。
同期処理で記述されていた場合は、その間が待ち時間としてユーザを待たせてしまいますが、
非同期にすることでユーザーは別の操作が可能になります。
やり方.
await:非同期処理に付与
async:非同期処理が含まれるメソッドに付与
(アクセス修飾子) async (戻り値型) (メソッド名)(引数)
{
await 非同期処理
}
コード例.
public async void MethodName()
{
await ShowMessage(“test”);
}
private void ShowMessage(string message)
{
labelMessage.text = message;
}