我假設它可能會這樣做,因爲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. 在一個線程上創建的控件不能在不同線程上的控件上生成 - 將DataGridView添加到TabPage到TabControl
- 3. MP3在不同的線程中播放
- 4. 從不同類中的不同線程修改JavaFX gui
- 5. 在不同的線程上釋放BSTR是否安全?
- 6. WPF線程和GUI如何從不同線程訪問對象?
- 7. 在System.in上的readLine不掛上Swing GUI線程
- 8. 我如何將兩個不同的線程放在單個服務上?
- 9. 將控制器動作放入線程
- 10. 線程在GUI中
- 11. XAML:將控件放在圖像上
- 12. 在非gui線程上創建表單
- 13. 在WxPython GUI線程上運行函數
- 14. 是否可以將一個事件處理程序放在與調用方不同的線程上?
- 15. 線程,事件和GUI
- 16. 事件,GUI和線程
- 17. 在Java中的GUI線程
- 18. Stoppble控制檯在不同線程上讀取
- 19. 如何從Excel互操作事件線程更新GUI控件?
- 20. 線程在WPF GUI線程太慢
- 21. 如何安排gui組件的狀態讀取的gui和線程同步?
- 22. 在gui事件後阻塞主線程
- 23. 查找GUI控件的所有者線程
- 24. 利用BackGroundWorker對Winforms控件上的GUI操作進行跨線程調用?
- 25. 放置在頁面的不同區域相同的ASP.NET控件
- 26. 將圖像加載到不同線程上的PictureBox上
- 27. 開放不同的GUI基於MySQL的條件
- 28. Python Tkinter在不同的線程上運行子進程以避免不響應的GUI
- 29. C++不同的線程在FreeBSD 10上有相同的線程ID
- 30. 如何在不同內核上運行不同的線程?
在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