我在winform中有一个按钮,点击后会有一些处理5s。
在此过程中,我想将进度(ProgressBar)更新为UI,并完成工作的百分比。
如何使用Events& amp;代表?
其他方法(活动和代表除外)也受到欢迎。
答案 0 :(得分:5)
如果要在此过程中保持应用程序的响应,请使用BackgroundWorker。请参阅MSDN文章BackgroundWorker Class。它有一个c#示例,显示如何报告进度。
答案 1 :(得分:1)
下面的伪代码。我手头没有编译器,所以实际的ProgressBar界面可能与我记忆中的略有不同。
// service
delegate void ProgressDelegate( int CurrentValue, int MaxValue );
void BusinessProcess( ProgressDelegate progress )
{
// do something
progress( 20, 100 );
// do other things
progress( 50, 100 );
// do yet another thing
progress( 100, 100 );
}
// client
void Button1_Click( object sender, EventArgs e )
{
BusinessProcess(
(current, max ) =>
{
this.ProgressBar1.Maximum = max;
this.ProgressBar1.Value = current;
this.ProgressBar1.Refresh();
}
);
}