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

Winforms 可以从Windows窗体应用程序中的两个窗体访问线程吗,winforms,multithreading,visual-c++,c++-cli,Winforms,Multithreading,Visual C++,C++ Cli,我希望运行一个线程来更新picturebox中的图像。图像从相机中以流式传输。 我需要以两种不同的形式将图像流到两个PictureBox,但每次一个。 是否可以创建一个可由两个窗体访问的单个线程 我认为一个幕后工作人员是合适的。但是如何更新相应表单的picturebox中的图像 我正在使用VC++CLI/CLR线程是一个表示独立执行路径的对象(通常与另一个并行运行)。我不太清楚“调用”一个线程是什么意思,但可以实例化单独的线程并在其上运行方法。然后,您可以在创建的线程之间使用某种同步,例如监视器

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

我认为一个幕后工作人员是合适的。但是如何更新相应表单的picturebox中的图像


我正在使用VC++CLI/CLR

线程是一个表示独立执行路径的对象(通常与另一个并行运行)。我不太清楚“调用”一个
线程是什么意思,但可以实例化单独的线程并在其上运行方法。然后,您可以在创建的线程之间使用某种同步,例如
监视器
互斥体
事件
以及共享资源(注意跨线程访问)

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

公共无效寄存器(ICameraObserver ico)

然后,当摄像头接收到新图像时,它可以遍历任何类型的订阅服务器
ICameraObserver
,并调用
ReceiveImage
,传递刚刚接收到的图像


只是个主意。如果有多个线程在运行,请小心更新UI—这方面有很多信息。

线程是一个表示独立执行路径的对象(通常与另一个线程并行运行)。我不太清楚“调用”一个
线程是什么意思,但可以实例化单独的线程并在其上运行方法。然后,您可以在创建的线程之间使用某种同步,例如
监视器
互斥体
事件
以及共享资源(注意跨线程访问)

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

公共无效寄存器(ICameraObserver ico)

然后,当摄像头接收到新图像时,它可以遍历任何类型的订阅服务器
ICameraObserver
,并调用
ReceiveImage
,传递刚刚接收到的图像


只是个主意。如果您有多个线程在运行,请小心更新UI—这方面有很多信息。

我认为您要做的是:在创建新表单时,将第一个表单作为对象发送给构造函数,然后,创建setter/getter或只公开线程,然后您就可以“访问”它可以根据您的要求从两个表单中访问。

我认为您要做的是:在创建新表单时,将第一个表单作为对象发送给构造函数,然后,创建一个setter/getter或只是将线程公开,然后您可以根据您的要求从两个表单中“访问”它。

访问线程是什么意思?线程只是一种运行方法的东西。使用计时器控制更新,使用锁同步对图像数据的访问。@llya通过访问我的意思是调用。如果我在其中一个表单中定义了线程,那么如何从另一个表单中调用它?@David你能给我举个例子吗。我以前没有用过线程,我很困惑。你说的“访问线程”是什么意思?线程只是一种运行方法的东西。使用计时器控制更新,使用锁同步对图像数据的访问。@llya通过访问我的意思是调用。如果我在其中一个表单中定义了线程,那么如何从另一个表单中调用它?@David你能给我举个例子吗。我以前没有用过线程,非常困惑。