2011-04-05 115 views
1

我希望運行線程來更新圖片框中的圖像。圖像從相機流式傳輸。 我需要以兩種不同的形式將圖像流式傳輸到兩個圖像盒,但每次只能處理一個圖像盒。 是否有可能創建可以通過這兩種形式訪問的單個線程。可以從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

回答

1

Thread是代表執行的一個獨立的路徑上的物體(通常是並行運行到另一個)。我不確定你是通過「呼叫」Thread來表示你的意思,但你可以實例化單獨的線程並在其上運行方法。然後,在創建的線程之間,可以使用某種同步,如Monitors,MutexesEvents以及共享資源(小心跨線程訪問)。

對於您的問題,我會更傾向於使用某種訂閱模式,其中從相機接收圖像的類可以更新相機的任何觀察者。您可能需要使用如ReceiveImage方法稱爲ICameraObeserver的接口,那麼任何類可以用你的相機類通過某種方法進行註冊:

public void Register(ICameraObserver ico)

然後,當相機接收到一個新的形象,它可以遍歷通過ICameraObserver類型的任何用戶,並通過ReceiveImage傳遞剛剛收到的圖像。

只是一個想法。如果您有多個線程正在運行,請務必更新UI - 有很多關於此的信息。

0

我想你想要做的是這樣的:當創建新的表單時,將第一個表單作爲對象發送給構造器,然後創建一個setter/getter或者只是公開該線程,然後就可以「訪問「根據你的要求,這兩種形式都可以。

相關問題