C# 代码运行时,进度条(选框)消失
我有一个带有按钮和进度条的简单表单。用户单击按钮开始处理,并且在代码运行时,进度条会显示动画。在这种情况下,它只是一个for循环。但问题是进度条只出现了几分之一秒,然后就消失了C# 代码运行时,进度条(选框)消失,c#,C#,我有一个带有按钮和进度条的简单表单。用户单击按钮开始处理,并且在代码运行时,进度条会显示动画。在这种情况下,它只是一个for循环。但问题是进度条只出现了几分之一秒,然后就消失了 private void button1_Click(object sender, EventArgs e) { progressBar1.Style = ProgressBarStyle.Marquee; progressBar1.MarqueeAnimationSpeed = 100; fo
private void button1_Click(object sender, EventArgs e)
{
progressBar1.Style = ProgressBarStyle.Marquee;
progressBar1.MarqueeAnimationSpeed = 100;
for (int i = 0; i < 3; i++) { Thread.Sleep(1000); } // sleep 3 times for 1 second
}
private void按钮1\u单击(对象发送者,事件参数e)
{
progressBar1.Style=ProgressBarStyle.Marquee;
progressBar1.MarqueeAnimationSpeed=100;
对于(inti=0;i<3;i++){Thread.Sleep(1000);}//睡眠3次,持续1秒
}
我假设发生这种情况是因为代码继续后重新绘制了帧?因此,我尝试在另一个线程上运行for循环,但这似乎并不重要
循环运行时,如何使条形图设置动画
谢谢您可以通过在循环的每次迭代中包含对Application.DoEvents()的调用来解决此问题 但这并不是实现这一目标的最佳途径 推荐的方法是在另一个线程内处理循环,如BackgroundWorker,使progressbar在主线程上保持动画
您可以在这里得到一些解释:您可以通过在循环的每个迭代中包含对Application.DoEvents()的调用来解决这个问题 但这并不是实现这一目标的最佳途径 推荐的方法是在另一个线程内处理循环,如BackgroundWorker,使progressbar在主线程上保持动画
你可以在这里得到一些解释:我说要更多地提升后台工作人员。这真的是最好的方法go@gunr2171最好的方法是利用
async
关键字。但是,是的,BackgroundWorker
比调用DoEvents
@DanielMann要好得多,DoEvent
正如我所看到的那样,没有任何作用。我说的是BackgroundWorker
,因为在线程之间传递对象的框架已经存在,同时(最重要的部分)发送关于进度更改的状态消息。我说的是提升BackgroundWorker更多。这真的是最好的方法go@gunr2171最好的方法是利用async
关键字。但是,是的,BackgroundWorker
比调用DoEvents
@DanielMann要好得多,DoEvent
正如我所看到的那样,没有任何作用。我之所以说BackgroundWorker
,是因为在线程之间传递对象的框架已经存在,并且(最重要的部分)发送关于进度更改的状态消息。