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

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

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

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

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

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