2015-05-28 48 views
-1

好的。我遇到的問題有點難以解釋,但本質上我的問題是負責填充數據集的方法正在被跳過。調試器遇到有問題的代碼行,但跳過它。沒有進入或沒有進入的機會。方法被跳過?

// Class A 
private myTableDS _dsTable; // myTableDS.xsd 
private classB _clsB; 

protected override void OnLoad(EventArgs e) 
{ 
    if (_dsTable == null) 
    { 
     _dsTable = _clsB.LoadThisTable(); // The culprit 
    } 

    // More logic here. Mindblowing. It is. 
} 



// Class B 
public myTableDS LoadThisTable() 
{ 
    // Magic here 
} 

所以調試器命中線_dsTable = _clsB.LoadThisTable();並跳出。帶我回到第一個調用「onload」的代碼中的下一行。因此跳過_dsTables = _ASIO.LoadASTables();之下的所有邏輯。

想法?

+0

你在這裏有更多的邏輯嗎? Mindblowing。它是。 '?你在做什麼多線程/ asyc的東西? – tnw

+1

你什麼時候初始化_clsB? –

+0

我剛剛讀了一個類似的問題,我認爲解釋是,由於複雜的原因,.NET捕獲併吞下OnLoad中針對以64位模式運行的應用程序拋出的異常。我會尋找問題或它鏈接的文章,但尋找可能會引發異常的事情。例如,OnLoad中的_clsB是否爲null? – adv12

回答

0

通常,當調試器跳過代碼時,它與線程有關(這裏看起來不是這種情況),類型加載異常(缺少程序集)或代碼的不同版本部署比正在調試。

如果後者出現問題,解決方案是確保將最新的程序集實際部署到您正在調試的環境中。

另外,嘗試在myTableDS.LoadThisTable()中放入Debbugger.Launch()語句並設置Visual Studio,以便調試程序在引發異常(不只是未處理)時中斷。