简单的多线程问题

时间:2015-06-24 11:40:32

标签: c# multithreading invoke

我有一个名为Movement的类,它会在我的表单上将一个图片框(左边的那个人)移动到一个随机位置,当它的Lead方法被执行时。我还有一个方法可以移动另一个名为SetMrShadowToMove的图片框(右边的黑人)。假设这两个图片框同时移动并同时到达随机点(两个图片框一个点)。

enter image description here

目前,这些方法使用计时器来移动图片框,但我的主要目的是有一个循环,直到图片框的坐标符合所选择的随机点,同时使用Thread.Sleep来延迟进程并制作一个它的动画。

为此,我需要在不同的线程上运行这两个方法,因此我的UI线程不会被冻结,这些方法会同时运行。

我的问题是我不知道如何在不同的线程上运行这些方法,也不知道如何访问其他线程上的图片框(这似乎与调用和东西有关) !)。

解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

最好的方法(在我看来)是使用后台工作者。

那些东西可以在后台进行计算。如果您想在此之后更新界面,可以使用报告进度事件来调用主(接口)线程并重新绘制屏幕。即使您希望将后台工作程序的事件作为最终的偶数(例如,如果先生的阴影被“销毁”或其他东西),您也可以完成工作。

我不知道你的先生阴影代码,所以我没有任何直接的示例代码。但是有关如何使用后台工作程序的完整示例可以在msdn here上找到。我希望这会对你有所帮助。