我正在使用後臺工作人員更新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 –