【发布时间】:2019-10-19 10:09:39
【问题描述】:
我正在创建一个程序,它可以在启动时从文件中读取大量数据。
我尝试了一个进度条来显示加载进度,希望它能停止无响应,但它在中途冻结并更新屏幕上的标签以解决问题。
//This will be 'private void Form1_Shown(object sender, EventArgs e)'
private void loadingBarToolStripMenuItem_Click(object sender, EventArgs e)
{
progressBar1.Show();
for (int i = 0; i < 100; i++)
{
progressBar1.Value = i;
System.Threading.Thread.Sleep(50);
//StartRespondingAgain();
}
progressBar1.Hide();
}
【问题讨论】:
-
如果您的工作量很大,请将其转移给后台工作人员!从那里您可以更新进度条。周围有很多例子...... - 无论睡眠应该做什么,你都不想要它! ((也不是任何 Application.DoEvents !!))
-
如果不想使用多线程,可以在循环中添加
progressBar1.Refresh()和Application.DoEvents()在Sleep()前面,可以去掉。 -
实际上这似乎只是工作,因为没有实际负载。
-
@TaW 我在调试程序时发生了同样的事情,但是在从文件资源管理器运行程序时遇到了问题。我认为从 Visual Studio 调试时,无响应功能被禁用。
标签: c# visual-studio