Winformで非同期にフォームを読み込むコードを教えてください。

WinFormsでは、async/awaitキーワードを使用してフォームの非同期ロードを実行できます。以下に簡単な例を示します。

まずフォームの内容をロードする非同期メソッドを定義します。

private async Task LoadFormDataAsync()
{
    // 模拟耗时操作
    await Task.Delay(2000);

    // 加载窗体的内容
    // ...
}

そして、その非同期メソッドをフォームのロードイベントで呼び出す:

private async void Form1_Load(object sender, EventArgs e)
{
    // 显示加载提示
    label1.Text = "正在加载...";

    // 异步加载窗体内容
    await LoadFormDataAsync();

    // 加载完成后,隐藏加载提示
    label1.Text = "加载完成";
}

この例では、LoadFormDataAsyncメソッドは時間のかかる操作(Task.Delayメソッドを使用)をシミュレートした後、フォームの内容を読み込みます。フォームのロードイベントでは、まずローディングプロンプトが表示され、次にLoadFormDataAsyncメソッドを呼び出して非同期に読み込み、最後に読み込み完了後にローディングプロンプトが非表示になります。

イベントハンドラ内では非同期メソッドを直接呼べないので、非同期メソッドの前には非同期修飾子を付け、返却型をvoidやTaskにする必要があります。非同期メソッド内では、awaitキーワードを使って非同期操作の完了を待つことができます。

bannerAds