可以从Windows窗体应用程序中的两个窗体访问一个线程

时间:2011-04-05 04:06:42

标签: winforms multithreading visual-c++ c++-cli

我希望运行一个线程来更新图片框中的Image。图像从相机流式传输。 我需要以两种不同的形式将图像流式传输到两个图片框,但是一次一个。 是否可以创建一个可由两种表单访问的单个线程。

我认为背景工作者是合适的。但是,如何更新相应表格的图片框中的图像?

我正在使用VC ++ CLI / CLR

2 个答案:

答案 0 :(得分:1)

Thread是一个表示独立执行路径的对象(通常与另一个并行运行)。我不是很确定“调用”Thread是什么意思,但你可以实例化单独的线程并对它们运行方法。然后在您创建的线程之间,您可以使用某种同步,例如MonitorsMutexesEvents以及共享资源(小心跨线程访问)。

对于你的问题,我会更倾向于使用某种订阅模式,其中从相机接收图像的类可以更新相机的任何观察者。您可能需要一个名为ICameraObeserver的接口,其方法如ReceiveImage,然后任何类都可以通过某种方法注册您的相机类:

public void Register(ICameraObserver ico)

然后,当相机收到新图像时,它可以遍历ICameraObserver类型的任何订阅者,并通过ReceiveImage传递刚刚收到的图像。

只是一个想法。如果您运行多个线程,请小心更新UI - 有很多信息。

答案 1 :(得分:0)

我认为你想要做的是:在创建新表单时,将第一个表单作为对象发送给构造函数,然后创建一个setter / getter或者只是将该行程公开,然后你可以“访问”它可以按照您的要求从两种表格中获取。