要在单击提交按钮的同时保持进度条运行,并冻结屏幕和后台代码应运行



我需要在点击提交按钮的同时运行进度条,并将屏幕冻结5秒钟,但提交按钮中的代码应该并行完成这项工作。

我已经创建了一个等待表单,但我在连接关闭后调用了等待表单,因此进度条需要时间才能出现,我可以在屏幕上选择不应该出现的其他选项。

private void cmdselect_click(System.object _sender System.EventArgs e1)
{
using (frmwait frm=new frmwait(savedata)) //  and I have called wait form here
{
frm.Showdialog(this)
}
}
// Savedata method
void Savedata()
{
for(int i=1;i<=500;i++)
{
Thread.Sleep(10);
}
}

一旦触发按钮单击,进度条不会立即启动。

您可以使用这个:

progressBar.Minimum = 0;
progressBar.Maximum = 500;
progressBar.Value = 0;
progressBar.Step = 1;
progressBar.Refresh();
Enabled = false;               // for UX
Cursor = Cursors.WaitCursor;   // for UX
try
{
for( int i = 1; i <= progressBar.Maximum; i++ )
{
// do process
progressBar.PerformStep();
progressBar.Refresh();
Thread.Sleep(10);
}
}
finally
{
Cursor = Cursors.Default;
Enabled = true;
}

无需睡眠,除非你想降低进程的速度。