C#Winforms在从数据库加载到listView时显示

C#Winforms在从数据库加载到listView时显示,c#,multithreading,winforms,ado.net,C#,Multithreading,Winforms,Ado.net,我正在从数据库加载到listView中,但我需要在加载时显示填充进度。当前,数据仅在加载完成后显示。这就是我迄今为止所做的,感谢您的帮助: string SQLCommand = "SELECT * FROM table"; using(SQLiteConnection con = new SQLiteConnection(connectionString)) { con.Open(); using (SQLiteCommand cmd = new SQLiteCommand(S

我正在从数据库加载到listView中,但我需要在加载时显示填充进度。当前,数据仅在加载完成后显示。这就是我迄今为止所做的,感谢您的帮助:

string SQLCommand = "SELECT * FROM table";
using(SQLiteConnection con = new SQLiteConnection(connectionString))
{
    con.Open();
    using (SQLiteCommand cmd = new SQLiteCommand(SQLCommand, con))
    { 
        using (SQLiteDataReader rdr = cmd.ExecuteReader())
        {
            while (rdr.Read())
            {
                var v1 = (rdr[3].ToString());
                var v2 = (rdr[4].ToString());
                var v3 = (rdr[5].ToString());
                var v4 = (rdr[6].ToString());

                ListViewItem item1 = new ListViewItem(v1);
                item1.SubItems.Add(v4);
                item1.SubItems.Add(v2);
                item1.SubItems.Add(v3);
                lvwDetails.Items.AddRange(new ListViewItem[] { item1 });
                System.Threading.Thread.Sleep(2000);
            }
        }
    }
}

您需要在后台线程或任务中进行SQL处理,并调用Dispatcher或UI线程进行更新

在启动后台任务之前显示“加载”信息,然后当异步任务完成时,您应该调用UI线程以使用数据更新UI,并删除加载信息


我不知道你的应用程序的所有上下文,但我假设你显示的代码是在UI主线程下运行的,并放置线程。Sleep并没有使它异步,它只是在加载完成之前冻结你的UI。

你确定
thread.Sleep(2000)
做了什么吗?还有,你想展示什么样的进步?只需等待2秒钟,看看人口。我可以从控制台中看到,但不能从列表视图中看到。任何对
线程的调用。Sleep
都会给我带来一个巨大的危险,这是我今天看到的问题。谢谢你的回答,你能用一些代码显示吗?