防止WinForms PictureBox动画GIF在处理过程中暂停?

时间:2011-01-14 17:30:13

标签: c# .net winforms multithreading

我有一个带有2个控件的表单。控件1有多个搜索条件,用户可以单击按钮开始搜索。 Control 2有一个GridView,它将显示搜索结果,并且还有一个带有动画Gif的PictureBox。

Control 1中有一个方法,它有一个嵌套的foreach循环,需要花费5分钟才能完成(取决于搜索条件,有时它几乎立即完成)。

我会在Control 2上调用一个方法,使PictureBox可见,动画Gif开始运行。一旦foreach循环被击中需要一段时间,图像就会完全停止。每当我显示任何MessageBoxes时,图像再次开始运行(我认为这是因为MessageBox阻塞)。一旦MessageBox关闭,图像就会停止动画制作。

我认为我需要利用线程的东西,但我正在尝试的一切(ImageAnimator,线程调用调用Invoke的方法等)都似乎不起作用。任何提示我需要使用哪些事件/库才能使其工作?有什么好的例子可供参考吗?

2 个答案:

答案 0 :(得分:8)

您长时间运行的代码在GUI-Thread中运行并阻止内部消息循环,因此任何GUI都会停止。尝试在单独的工作线程中运行长时间运行的代码。

答案 1 :(得分:2)