【C#】非同期処理の実装方法

ALL
この記事は約3分で読めます。

今回は、「非同期処理」について解説していこうと思います。

なじみのない単語に聞こえる方もいらっしゃるかと思いますが、どうぞ最後まで読んで理解してもらえると幸いです。

非同期処理って何?.

非同期処理とは、処理される順番が関係ないロジックになります。

本来ロジックは、記述された順番によって処理されます。

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;
}