以下是使用异步加载 Winform 表格的 C# 代码示例:

private async void btnLoadData_Click(object sender, EventArgs e)
{
    // 显示'加载中'提示信息
    lblLoading.Text = '正在加载数据,请稍候...';
    lblLoading.Visible = true;

    try
    {
        // 异步加载数据
        List<DataItem> items = await Task.Run(() => GetDataItems());

        // 绑定表格数据
        dgvData.DataSource = items;
    }
    catch (Exception ex)
    {
        MessageBox.Show('加载数据出错:' + ex.Message);
    }

    // 隐藏'加载中'提示信息
    lblLoading.Visible = false;
}

private List<DataItem> GetDataItems()
{
    // 模拟加载数据的耗时操作
    Thread.Sleep(5000);

    // 返回数据
    List<DataItem> items = new List<DataItem>();
    items.Add(new DataItem() { Id = 1, Name = 'Item 1', Price = 10.5 });
    items.Add(new DataItem() { Id = 2, Name = 'Item 2', Price = 20.0 });
    items.Add(new DataItem() { Id = 3, Name = 'Item 3', Price = 30.8 });
    return items;
}

public class DataItem
{
    public int Id { get; set; }
    public string Name { get; set; }
    public double Price { get; set; }
}

在上面的示例中,当用户单击'加载数据'按钮时,程序会显示'加载中'提示信息,然后使用Task.Run方法在后台线程中异步加载数据,加载完成后将数据绑定到表格控件上。

需要注意的是,在异步加载数据的过程中,由于后台线程与UI线程是不同的线程,因此需要使用Invoke方法在UI线程上更新UI控件的状态,以避免出现线程安全问题。

C# Winform 表格异步加载代码示例 - 提升效率,优化用户体验

原文地址: https://www.cveoy.top/t/topic/ngKz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录