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

问题描述:

我希望运行线程来更新图片框中的图像。图像从相机流式传输。 我需要以两种不同的形式将图像流式传输到两个图像盒,但每次只能处理一个图像盒。 是否有可能创建可以通过这两种形式访问的单个线程。可以从Windows窗体应用程序中的两个窗体访问线程

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

我使用VC++ CLI/CLR

+0

你是什么意思的“访问线程”?线程只是运行方法的东西。 – 2011-04-05 06:16:46

+1

使用计时器来控制更新并锁定同步对图像数据的访问。 – 2011-04-05 06:40:22

+0

@llya通过访问我的意思是打电话。如果我使用其中一种形式定义线程,如何从另一种形式调用它? – xaria 2011-04-06 01:52:36

Thread是代表执行的一个独立的路径上的物体(通常是并行运行到另一个)。我不确定你是通过“呼叫”Thread来表示你的意思,但你可以实例化单独的线程并在其上运行方法。然后,在创建的线程之间,可以使用某种同步,如Monitors,MutexesEvents以及共享资源(小心跨线程访问)。

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

public void Register(ICameraObserver ico)

然后,当相机接收到一个新的形象,它可以遍历通过ICameraObserver类型的任何用户,并通过ReceiveImage传递刚刚收到的图像。

只是一个想法。如果您有多个线程正在运行,请务必更新UI - 有很多关于此的信息。

我想你想要做的是这样的:当创建新的表单时,将第一个表单作为对象发送给构造器,然后创建一个setter/getter或者只是公开该线程,然后就可以“访问“根据你的要求,这两种形式都可以。