程序大致思路,用backgroundwork组件后台操作listview,将listview里的数据添加到数据库,同时显示状态条的进度
//存数据到数据库
private void button3_Click(object sender, EventArgs e)
{
button3.Enabled = false;//将存数据库按钮变成灰色
if(backgroundWorker2.IsBusy)
{
return;
}
backgroundWorker2.RunWorkerAsync();
}
private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
{
DiaoYong();
}
private void DiaoYong()//调用数据存储函数
{
if (listView1.InvokeRequired==false)
{
SaveDataToDb();
}
else
{
SaveDataToDb_delegate savedelegate = new SaveDataToDb_delegate(SaveDataToDb);
listView1.Invoke(savedelegate);
}
}
private void SaveDataToDb()//数据存储函数
{
// ............
//保存listview的数据到数据库
for (int i = 0; i < listView1.Items.Count; i++)
{
int per = (i / listView1.Items.Count) * 100;
backgroundWorker2.ReportProgress(per);
// ....................
}
}
private void backgroundWorker2_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
/////上面红色的代码如何改写
还有就是这样运行,界面也还是假死的,该怎么解决?
在线等,麻烦各位大大了。
------解决思路----------------------
SaveDataToDb这个函数直接调就行了
------解决思路----------------------
会不会有跨线程问题呢,好像还是楼上帮我解决的