关于C#控件显示的问题
背景:点击一个按钮执行耗时操作之前,我想要显示一个picturebox,里面有加载了一张动态图片,这样就相当于一个loading界面,然后再结束耗时操作的时候将控件隐藏。
代码如下:
private void test_Click(object sender, EventArgs e)
{
picturebox1.Visible = true;
// 这里执行耗时操作,用循环来替代
for (int i = 0; i < 100; i++ )
{
for (int j = 0; j < 100; j++ )
{
for (int k = 0; k < 10000; k++ )
{
int[] arrayll = new int[100];
}
}
}
MessageBox.Show("Finished!!!");
}
问题:
当执行到picturebox1.visible = true时,控件不显示。要一直到循环结束,执行到MessageBox.Show("Finished!!!");时,控件才显示。
这是为什么?有什么办法可以解决?
------解决方案--------------------picturebox1.Visible = true;
picturebox1.Update();------解决方案--------------------卡住是没办法的,因为他们都是在主线程中运行。
一般的做法是耗时的操作另开线程运行,运行完成后如果需要更新界面,通过委托更新界面。