我有一个带有2个控件的表单。控件1有多个搜索条件,用户可以单击按钮开始搜索。 Control 2有一个GridView,它将显示搜索结果,并且还有一个带有动画Gif的PictureBox。
Control 1中有一个方法,它有一个嵌套的foreach循环,需要花费5分钟才能完成(取决于搜索条件,有时它几乎立即完成)。
我会在Control 2上调用一个方法,使PictureBox可见,动画Gif开始运行。一旦foreach循环被击中需要一段时间,图像就会完全停止。每当我显示任何MessageBoxes时,图像再次开始运行(我认为这是因为MessageBox阻塞)。一旦MessageBox关闭,图像就会停止动画制作。
我认为我需要利用线程的东西,但我正在尝试的一切(ImageAnimator,线程调用调用Invoke的方法等)都似乎不起作用。任何提示我需要使用哪些事件/库才能使其工作?有什么好的例子可供参考吗?
答案 0 :(得分:8)
您长时间运行的代码在GUI-Thread中运行并阻止内部消息循环,因此任何GUI都会停止。尝试在单独的工作线程中运行长时间运行的代码。
答案 1 :(得分:2)
2个字:BackgroundWorker类。 http://msdn.microsoft.com/en-us/library/waw3xexc.aspx