我假設它可能會這樣做,因爲google chrome等程序已經更好,並將每個選項卡放在單獨的進程中。 那麼我怎麼能把一個GUI控件,如datagridview在一個單獨的線程?將GUI控件放在不同的線程上?
回答
我不認爲你需要爲每一個控制線程否則你就會有線程的數量龐大,然後你可能會開始遇到各種各樣的麻煩。
這裏有一對夫婦的網站,讓您開始: http://www.albahari.com/threading/
http://msdn.microsoft.com/en-us/library/aa645740(VS.71).aspx
我認爲那是不可能的......爲了修改一個控制(例如,通過增加一個孩子吧。) ,你需要在創建父代的同一個線程上。因此,您的子控件必須由創建其父項的相同線程創建。
我記得在不同的線程見狀創建的唯一要素都是非模態對話框等,但,這只是可能,因爲非模態對話框是新的窗口/表格。
谷歌瀏覽器可能會讓每個標籤在不同的進程中運行,但這並不意味着表示標籤的實際UI元素不會被封送到主UI線程(創建包含瀏覽器的窗口的那個線程)以供顯示。
當然,現在你仍然可以在單獨的線程上執行加載網格數據的工作,Ardman的鏈接將幫助你。但是,實際上將數據綁定到網格時,您需要在UI線程(或者更確切地說,創建要修改的控件的線程)上執行此操作。
希望這會有所幫助!
這不是處於單獨線程中的控件,而是通過控件啓動的請求。
假設您在不同的地址上打開了兩個選項卡。您點擊一個鏈接,指向第一個標籤頁上的另一個網站。同時,您點擊第二個標籤上的另一個鏈接。
首先,您需要知道當您單擊第一個選項卡上的鏈接時可能會啓動一個線程,從而使其可以響應GUI。這與第二個選項卡相同,當您單擊其中的鏈接時。其次,我們現在有一個線程(主線程,也稱爲GUI線程),其工作是處理用戶交互。另一個線程處理來自第一個選項卡上鍊接的請求,以及另一個線程處理第二個選項卡上的鏈接。第三,儘管正在處理您對這兩個標籤的鏈接請求,但您可以打開一個新標籤並在Google上進行搜索!然後,即使在應用程序和瀏覽器被請求佔用的情況下,這也要求您的GUI具有響應能力。
四,關於後臺線程的迴歸,他們將返回到主線程報告其工作的結果,也就是說,他們要求獲得解決DNS的網絡響應鏈接的鏈接點擊。
一種有趣的方式,使其在C#可能,並保持儘可能的簡單,就是通過BackgroundWorker
類。
BackgroundWorker
的每個實例表示一個線程。因此,當用戶單擊鏈接時捕獲鼠標單擊時,您需要實例化應用程序所需的BackgroundWorker
。然後該請求被髮送到當對RunWorkerAsync()
方法進行調用時引發的DoWork()
事件。
如何使用BackgroundWorker
此Microsoft文章Here's an interesting tutorial解釋大致Windows資源管理器如何做你問什麼:
http://msdn.microsoft.com/en-us/library/ms741870.aspx#multi_browser
你基本上每個頂層窗口一個線程,所有的該窗口的事件將在同一個線程中觸發。
- 1. 線程訪問GUI控件
- 2. 在一個線程上創建的控件不能用於不同線程上的控件
- 3. 將asp.net控件放在頁面上的不同位置
- 4. 在一個線程上創建的控件不能在不同線程上的控件上生成 - 將DataGridView添加到TabPage到TabControl
- 5. MP3在不同的線程中播放
- 6. 從不同的線程訪問GUI線程拋出異常
- 7. 線程停放在AbstractFuture的條件上
- 8. 從不同類中的不同線程修改JavaFX gui
- 9. 不同硬件上的線程
- 10. 在不同的線程上釋放BSTR是否安全?
- 11. WPF線程和GUI如何從不同線程訪問對象?
- 12. 在System.in上的readLine不掛上Swing GUI線程
- 13. Java:控制器線程通信的GUI
- 14. 我如何將兩個不同的線程放在單個服務上?
- 15. 拖放主窗體,將其重新放置在屏幕上,在不同的線程或背景工作上
- 16. 將控制器動作放入線程
- 17. 線程在GUI中
- 18. 如何在不同的Qt線程中調用GUI元素?
- 19. 在WxPython GUI線程上運行函數
- 20. 在非gui線程上創建表單
- 21. XAML:將控件放在圖像上
- 22. Application_Error在不同的線程上觸發
- 23. 線程,事件和GUI
- 24. 事件,GUI和線程
- 25. 在Java中的GUI線程
- 26. 在不同線程中創建的控件.NET
- 27. 如何在不同的線程中引用控件?
- 28. 是否可以將一個事件處理程序放在與調用方不同的線程上?
- 29. Stoppble控制檯在不同線程上讀取
- 30. 不同線程的Android控制器
在CreateWindow中沒有要求父項由同一個線程擁有。所以這只是.NET不支持的另一個Windows功能。 – 2010-05-25 20:58:42
我提到你確實可以在不同的線程上創建新的窗口/窗體......我誤解你的意思嗎? – Phong 2010-05-25 22:01:42
我相信Google Chrome並不僅僅是在不同的線程中進行後臺提取,而是在不同的線程中爲每個選項卡執行渲染和任何事件處理。否則,您在一個標籤中最喜歡的Flash遊戲可能會降低您在另一個選項卡中的YouPo,呃,YouTube的體驗。 – SimonC 2012-03-06 05:04:37