[問題] 使用BackgroundWorker 執行 WebBrower 發生非單一執行緒

看板C_Sharp (C#)作者 (小No)時間18年前 (2008/05/01 14:01), 編輯推噓2(208)
留言10則, 4人參與, 最新討論串1/1
我想寫一個應用程式 使用 BackgroundWorker 在幕後呼叫 WebBrower 來擷取許多網頁上的資料 但 WebBrower元件好像必須要在主執行緒執行, 不知道由沒有人有解決的方法呢 麻忙大家了!! 類似的錯誤資訊: 例外詳細資訊: System.Threading.ThreadStateException: 無法產生 ActiveX 控制項 '8856f961-340a-11d0-a96b-00c04fd705a2',因為目前的執行緒不是在單一執行緒 Apartment。 [ThreadStateException: 無法產生 ActiveX 控制項 '8856f961-340a-11d0-a96b-00c04fd705a2',因為目前的執行緒不是在單一執行緒 Apartment。] System.Windows.Forms.WebBrowserBase..ctor(String clsidString) +3653451 System.Windows.Forms.WebBrowser..ctor() 麻煩大家了~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.117.219.210

05/01 14:57, , 1F
"擷取許多網頁上的資料"應該不用這個元件吧
05/01 14:57, 1F

05/01 17:29, , 2F
我是要擷取網頁內容的一部份重要資訊 如 網頁table的內容
05/01 17:29, 2F

05/01 17:30, , 3F
故使用 WebBrowser的GetElementsByTagName很方便
05/01 17:30, 3F

05/01 17:32, , 4F
但因為要抓很多網頁, 故不知是否有人能有背景執行的方法
05/01 17:32, 4F

05/01 17:35, , 5F
不能放在主執行緒嗎?
05/01 17:35, 5F

05/01 23:27, , 6F
main thread建好WebBrowser (不確定要不要加到Form上)
05/01 23:27, 6F

05/01 23:27, , 7F
傳到另一個Thread,然後判斷InvokeRequired,不行嗎?
05/01 23:27, 7F

05/01 23:44, , 8F
(我習慣用ThreadPool/Thread)
05/01 23:44, 8F

05/02 08:39, , 9F
您好我對main thread建好WebBrowser傳到另一個Thread
05/02 08:39, 9F

05/02 08:39, , 10F
不太了解,不知道您是否有個您寫過的簡單範例可借我參考
05/02 08:39, 10F
文章代碼(AID): #186Lp8J1 (C_Sharp)
文章代碼(AID): #186Lp8J1 (C_Sharp)