台灣最大程式設計社群網站
線上人數
589
 
會員總數:245782
討論主題:189419
歡迎您免費加入會員
討論區列表 >> C# >> TargetInvocationException 的問題 (C# WPF 爬蟲)
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
TargetInvocationException 的問題 (C# WPF 爬蟲)
價值 : 150 QP  點閱數:857 回應數:1
樓主

Murphy Chu
門外漢
0 1
48 1
發送站內信

各位前輩們好,小弟這裡有個摸不著頭緒的問題想請教
最近在嘗試寫一個爬蟲軟體
運作流程大概是這樣

>透過 Google Sheets API 從 Google試算表 抓網站清單
>按下搜尋鍵,新建4個Thread並執行 (穩定後有考慮用到8個)
>透過 HtmlAgilityPack 去擷取網頁中特定 XPath 的文字
>將XPath的文字更新到Google抓下來的資料陣列
>網頁全數擷取完畢後將更新的資料丟回Google

目前有個很不定時會出現的錯誤
有時候跑個10~20分鐘就出現,有時候又可以穩穩地跑幾小時都沒事
錯誤的詳細狀況如下 :

[code]
System.Reflection.TargetInvocationException
HResult=0x80131604
Message=引動過程的目標傳回例外狀況。
Source=mscorlib
StackTrace:
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index)
at HtmlAgilityPack.HtmlWeb.LoadFromBrowser(String url, Func`2 isBrowserScriptCompleted)
at Crawler.GetHtmlDocument.RunCrawler(String inPutUrlPart) in C:\Users\Murphy\Desktop\Crawler\WpfApp1\CrawlerCore.cs:line 38
at Crawler.MainWindow.RunCrawler(Object threadNumber) in C:\Users\Murphy\Desktop\Crawler\WpfApp1\MainWindow.xaml.cs:line 110
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart(Object obj)

內部例外狀況 1:
AccessViolationException: 嘗試讀取或寫入受保護的記憶體。這通常表示其他記憶體已損毀。
[/code]

再來是我程式碼的片段

Mainwindow的程式碼片段


GetHtmlDocument的程式碼片段


再來是我的開發環境

作業系統 : Windows 10 Pro (17134.228)
編譯器 : VS 2017 (15.8.2)
架構 : .NET Framework 4.5
使用的NuGet套件 :
Google.Apis.Sheets V4 (1.35.1.1335)、HtmlAgilityPack (1.6.17/1.7.4/1.8.7都試過不行)


剛開始學C#不久
假如說有程式碼寫的傷眼或是很蠢的部分在這邊先說聲不好意思

再麻煩各位前輩提點了
如果還有需要提供其他資訊,也請不吝告知
謝謝




搜尋相關Tags的文章: [ TargetInvocationExceptio ] , [ HtmlAgilityPack ] , [ ] ,
本篇文章發表於2018-09-07 11:15
1樓
作者回應

Murphy Chu
檢舉此回應
拍謝,
GetHtmlDocument的程式碼片段 的第47行是"xPathFoot"
少打到一個 "

本篇文章回覆於2018-09-07 11:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.