我有一个愚蠢的问题,但却被卡住了。我正在从我的代码中执行存储过程,该过程需要一些时间,因此我正在显示一个进度条,用于显示执行进度,但存储过程执行时,没有任何东西可以使进度条的值递增。
这是我的代码:
void btnYes_Click(object sender, EventArgs e)
{
if (DialogResult.Yes == MessageBox.Show("Are you sure", "", MessageBoxButtons.YesNo))
{
try
{
dbDataEntities db = new dbDataEntities();
string myquery = "DECLARE @return_value int EXEC @return_value = [dbo].[ssspUpdateMarksOfStudent] SELECT 'Return Value' = @return_value";
//progressbar1.Maximum = 5000;
//progressbar1.value = ?; // how could i increment it
//
db.Database.ExecuteSqlCommand("myquery");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
我也尝试使用秒表,通过设置当前值来实现,而不是在执行过程中递增。
Stopwatch st = new Stopwatch();
st.Start();
progressbar1.Maximum = 5000;
progressbar1.Value = Convert.ToInt16(st.Elapsed.Seconds);
//My stored procedure call
st.Stop();
那么这只能通过使用后台工作者
来完成,还有其他方法吗?
我是编程新手,所以没有经常使用后台工作者
,因此我正在尝试寻找替代方法。
请提供建议。提前致谢。