>>851
こうすれば?
public FormC() {
 this.Visible = false;
}
async void FormC_Load() { //CのLoadイベントハンドラ
 frmB.Show();
 await Task.Run(() => {
  //>>842と同じ
 });
 frmB.Close();
 this.Visible = true;
}
UIスレッドは常にシングルスレッドで絶対にブロックしないように作るのが
HTML/JS、Android、iOS、UWPなど今時の標準的なGUIプログラミングのスタイルなので、
夏休みに勉強でプログラミングしてるんなら時代遅れのWinFormsを使う場合でも慣れといた方がいいよ
ShowDialogやDoEventsは使わない