我正在創建一個Windows應用程序。在點擊按鈕我執行一個存儲過程。存儲過程的執行時間可能需要1分鐘,或者可能需要2分鐘或更長時間。那麼當我的SP執行時,我該如何顯示進度條。 下面是按鈕的代碼單擊創建實時進度條winform
private void mnucollections_Click(object sender, EventArgs e)
{
if (_commonDAC == null)
_commonDAC = new CommonDAC();
if (MsgBox.Show("It is advised that you run Rebalance before entering Collection \n Run Rebalance now ?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
frmProgressBar progress = new frmProgressBar(LoginName);
progress.ShowDialog();
}
else
{
frmCollections co = new frmCollections(LoginName);
co.ShowDialog();
}
窗體上哪裏是在窗體的Load我寫下面的代碼
private void frmProgressBar_Load(object sender, EventArgs e)
{
if (_commonDAC == null)
_commonDAC = new CommonDAC();
this.ServiceProgressBar.Visible = true;
int result = _commonDAC.RebalanceClient(); // Calling my store procedure
this.ServiceProgressBar.Visible = false;
//progressBar1.Style = ProgressBarStyle.Blocks;
}
你打算如何讓你的SP報告其進展,以便你可以捕獲它?或者你是否會像它說的那樣使其具有時間依賴性,至多總是需要2分鐘? – romar 2014-12-03 05:58:01
@romar我舉一個例子,sp可能需要10分鐘或半小時才能成功執行。 – 2014-12-03 06:01:22
這意味着您剩下兩個選項。 1.將進度條的ProgressBarStyle屬性設置爲「選取框」。這並沒有顯示真正的進展,但它只是通知用戶該程序仍處於活動狀態並正在處理任務(沒有顯示完成百分比)。 2.將您的存儲過程分成幾個階段,並在每個階段後將狀態報告回您的winform。一種做法是這樣的:http://stackoverflow.com/questions/6447152/progress-bar-for-stored-procedure – romar 2014-12-03 07:26:10