我遇到了进度条的问题,因为在加载数据之前它没有显示。
我不确定我的代码是对还是错。请帮助解决这个问题并解决这个问题。任何建议对我来说真的很有帮助..
progressBar1.Minimum = 0;
progressBar1.Maximum = short.MaxValue;
progressBar1.Value = 0;
double value = 0;
UpdateProgressBarDelegate updatePbDelegate = new UpdateProgressBarDelegate(progressBar1.SetValue);
foreach (CDType ctp in dgAttributes.ItemsSource)
{
if (ctp.IsSelected == true)
{
//Mouse.OverrideCursor = Cursors.Wait;
var CDTypeID = ctp.TYPE_ID;
label3.Content = "Loading.." + CDTypeID;
SqlCommand sqlCommand = new SqlCommand(conn.ConnectionString);
sqlCommand.CommandType = CommandType.StoredProcedure;
sqlCommand.CommandText = "LOAD_DATA_SOURCE_SAVE";
sqlCommand.Parameters.AddWithValue("CDTYPE_ID", CDTypeID);
sqlConnection.Open();
sqlCommand.Connection = sqlConnection;
do
{
value += 1;
Dispatcher.Invoke(updatePbDelegate,
System.Windows.Threading.DispatcherPriority.Background,
new object[] { ProgressBar.ValueProperty, value });
//i'm not sure whether its correct way or not to give below line here..? I mean execute non query...since it was looping all the time untill its reaches Maximum value
//sqlCommand.ExecuteNonQuery();
}
while (progressBar1.Value != progressBar1.Maximum);
sqlConnection.Close();
//label3.Content = "Sucessfully Loaded..!";
}
}
答案 0 :(得分:1)
只要您无法确定需要多长时间,您可能希望使用其样式设置为不确定的进度条。
<ProgressBar IsIndeterminate="True" />
如果您使用UI线程加载数据,则Progressbar可能无法更新,因为线程正忙。有关如何使用后台工作程序加载数据的信息,请参阅this post。您也可以在StackOverflow上搜索;关于背景工作者有很多问题。
如果数据库批量传回数据,您可能能够跟踪其路上的批次数并使用具有实际值的进度条。