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キーワードを使って非同期操作の完了を待つことができます。