WinForms コントロールの非同期更新:UIフリーズ対策

WinFormsでコントロールのデータを非同期で更新するには、Control.BeginInvokeメソッドまたはTask.Runを使用することができます。

  1. コントロールのBeginInvoke
private async void UpdateControlDataAsync()
{
    await Task.Run(() =>
    {
        // 在异步线程中更新控件数据
        string newData = FetchDataFromServer();
        
        // 切换回UI线程更新控件数据
        this.BeginInvoke((Action)(() =>
        {
            // 更新控件数据
            label1.Text = newData;
        }));
    });
}
  1. タスクを実行
private async void UpdateControlDataAsync()
{
    string newData = await Task.Run(() =>
    {
        // 在异步线程中更新控件数据
        return FetchDataFromServer();
    });

    // 更新控件数据
    label1.Text = newData;
}

上記の2つの方法の中で、FetchDataFromServerメソッドは非同期スレッドでデータを取得するために使用されます。更新UIのコードをthis.BeginInvokeまたはawait Task.Runに配置することで、データ更新操作がUIスレッドで実行されることが保証され、スレッドの競合やUIの遅延の問題を回避できます。

bannerAds