我正在使用后台工作人员更新sqlserver中的某些表。进度条最大值正在设置为正确的值,进度条值正在增加,背景工作器progresschanged正确调用正确的值,但酒吧没有进展。进度条未使用backgroundworker进度
这里是background_dowork方法中形式为 的代码,有一个循环调用updateProgressBarValue,该值使用正确的值。
public InterfaceConvertLonLat()
{
InitializeComponent();
Shown += new EventHandler(Form1_Shown);
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
}
public void ConvertLonLat_Load(object sender, EventArgs e)
{
}
public void updateProgressBarValue()
{
progressBar1.Value++;
backgroundWorker1.ReportProgress(progressBar1.Value);
}
public void setProgressBarMax(int max)
{
progressBar1.Maximum = max;
MessageBox.Show("setprogressbarmax " + max);
}
public void Form1_Shown(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
public void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
convert.OSGB36ToWGS84("paf");
}
public void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
这里是包含在其他类调用updateprogressbarvalue循环,这是被解雇,并作为陈述backgroundworker1_progressChanged是被解雇,但条不动。
con.setProgressBarMax(address.Tables[0].Rows.Count);
foreach (DataRow LonLat in address.Tables[0].Rows)
{
con.updateProgressBarValue();
Double lon = 0;
Double lat = 0;
lat = Convert.ToDouble(LonLat["LTO"]);
lon = Convert.ToDouble(LonLat["LGO"]);
LocalToWGS84(ref lat, ref lon, OGB_M);
cmd1.Parameters["@LTW"].Value = lat;
cmd1.Parameters["@LGW"].Value = lon;
string dbQuery1 = "update " + tableName + " set LTW = @LTW, LGW = @LGW";
cmd1.CommandText = (dbQuery1);
cmd1.CommandType = CommandType.Text;
cmd1.Connection = conn;
cmd1.ExecuteNonQuery();
}
}
catch (Exception e)
{
MessageBox.Show("error converting: " + e.Message);
}
finally
{
conn.Close();
}
是不是应该从'DoWork'内部调用'ReportProgress'或'updateProgressBarValue'? – Tudor
我在DoWork方法和updateProgressBarValue方法之间没有看到任何连接。 – Tudor
我是那个方法convert.OSGB36ToWGS84(“paf”)是在这个类内的不同的类,它调用updateprogressbarvalue –