質問です
現在、以下のように一つの非同期処理(時間のかかるディスクの書き込み)
を実行しています。

private async void button1_Click(object sender, EventArgs e)
{
 await DoSomethingAsync();
 MessageBox.Show("完了");
}

これを実行中にUIを操作して、次の処理の準備ができたら(実行する内容はDoSomethingAsync)
button1を押して予約し、実行中の処理が終わったら引き続き実行させたいです。(並列ではなく)
また、「完了」は登録されたタスクが全て終わったときに出したいです。
どのように書くのが一般的なのでしょうか?


初回実行時にすべての実行すべきタスクがわかっている場合は
そのタスクのリストを作ってWhenAllする みたいなのはググったら出てきたんですが

ContinueWithを使うのかなと思ったのですが、書き方がわかりませんでした