我希望運行線程來更新圖片框中的圖像。圖像從相機流式傳輸。 我需要以兩種不同的形式將圖像流式傳輸到兩個圖像盒,但每次只能處理一個圖像盒。 是否有可能創建可以通過這兩種形式訪問的單個線程。可以從Windows窗體應用程序中的兩個窗體訪問線程
我認爲背景工作是適當的。但是,如何更新相應表格的圖片框中的圖片?
我使用VC++ CLI/CLR
我希望運行線程來更新圖片框中的圖像。圖像從相機流式傳輸。 我需要以兩種不同的形式將圖像流式傳輸到兩個圖像盒,但每次只能處理一個圖像盒。 是否有可能創建可以通過這兩種形式訪問的單個線程。可以從Windows窗體應用程序中的兩個窗體訪問線程
我認爲背景工作是適當的。但是,如何更新相應表格的圖片框中的圖片?
我使用VC++ CLI/CLR
甲Thread
是代表執行的一個獨立的路徑上的物體(通常是並行運行到另一個)。我不確定你是通過「呼叫」Thread
來表示你的意思,但你可以實例化單獨的線程並在其上運行方法。然後,在創建的線程之間,可以使用某種同步,如Monitors
,Mutexes
和Events
以及共享資源(小心跨線程訪問)。
對於您的問題,我會更傾向於使用某種訂閱模式,其中從相機接收圖像的類可以更新相機的任何觀察者。您可能需要使用如ReceiveImage
方法稱爲ICameraObeserver
的接口,那麼任何類可以用你的相機類通過某種方法進行註冊:
public void Register(ICameraObserver ico)
然後,當相機接收到一個新的形象,它可以遍歷通過ICameraObserver
類型的任何用戶,並通過ReceiveImage
傳遞剛剛收到的圖像。
只是一個想法。如果您有多個線程正在運行,請務必更新UI - 有很多關於此的信息。
我想你想要做的是這樣的:當創建新的表單時,將第一個表單作爲對象發送給構造器,然後創建一個setter/getter或者只是公開該線程,然後就可以「訪問「根據你的要求,這兩種形式都可以。
你是什麼意思的「訪問線程」?線程只是運行方法的東西。 – 2011-04-05 06:16:46
使用計時器來控制更新並鎖定同步對圖像數據的訪問。 – 2011-04-05 06:40:22
@llya通過訪問我的意思是打電話。如果我使用其中一種形式定義線程,如何從另一種形式調用它? – xaria 2011-04-06 01:52:36