2017-10-18 78 views
1

我正在使用DotNetBrowser,或者至少嘗試,並且我正在嘗試獲取文檔中的所有複選框。DotNetBrowser DOMNode調試

public static void SetCodecSettings() 
    { 
     var waitEvent = new ManualResetEvent(false); 
     _mf.Browser.FinishLoadingFrameEvent += delegate(object sender, FinishLoadingEventArgs e) 
     { 
      if (e.IsMainFrame) 
      { 
       waitEvent.Set(); 
       var doc = _mf.Browser.GetDocument(); 
       var html = _mf.Browser.GetHTML(); 
       var checkBoxes = doc.GetElementsByTagName("input"); 
      } 
     }; 
     _mf.Browser.LoadURL(_mf.PattonDeviceUrl + "/codecset.htm"); 
     waitEvent.WaitOne(); 
    } 

當我把一個斷點,所以我可以檢查一切,是在複選框,在調試器擴展複選框,當我得到以下錯誤: enter image description here

我不想關閉財產評估,因爲我想檢查該項目的內容。有關如何糾正此問題的任何建議?

+1

下面的文章也許可以解釋所觀察到的行爲:https://dotnetbrowser.support.teamdev.com/support/solutions/articles/9000117030--函數評估需要所有線程運行消息調試器或快速手錶 –

+0

@AnnaDolbina謝謝你,今晚我會試試。 – BigDevJames

+0

@AnnaDolbina適用於我需要的調試。如果您將此作爲答案,我會將其標記爲正確。 – BigDevJames

回答

3

Chromium引擎運行在一個單獨的過程中。 DotNetBrowser庫使用多個線程在Chromium引擎和.NET端之間交換數據。幾乎任何評估都涉及IPC,因爲DotNetBrowser本身不執行任何數據緩存。

當Visual Studio在某個斷點停止應用程序時,某些DotNetBrowser線程正在暫停。在這種情況下,庫無法從Chromium進程獲取數據和處理請求。這就是爲什麼你不能在調試器中評估表達式的原因。

在調試多進程應用程序時,這個問題相當普遍,不僅僅是DotNetBrowser。作爲一種解決方法,您可以使用日誌記錄在運行時顯示所需的數據。

下面的文章解釋了觀察到的行爲:

https://dotnetbrowser.support.teamdev.com/support/solutions/articles/9000117030--the-function-evaluation-requires-all-threads-to-run-message-in-debugger-or-quick-watch

+1

@ tschallacka感謝您指出這一點。我已經用必要的信息更新了我的答案。 –

+0

感謝@AnnaDolbina更新所有問題。你們可以請https://meta.stackoverflow.com/questions/361999/reachout-to-dotnetbrowser並使用https://meta.stackoverflow.com/questions/253849/is-it-acceptable-to- use-stack-overflow-as-a-qa-for-a-specific-product並修改您的網站網址以遵循指南 – Tschallacka