我从数据库加载到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);
}
}
}
}
答案 0 :(得分:2)
您需要在后台线程或任务中进行SQL处理,并调用Dispatcher或UI线程进行更新。
在开始后台任务之前显示“正在加载”信息,然后当异步任务完成时,您应该调用UI线程以使用数据更新UI并删除加载信息
我不知道你的应用程序的所有上下文,但我假设你在那里显示的代码是在UI主线程下运行的,并且将Thread.Sleep放入isnt使其异步,它只是冻结你的UI直到加载完成。