2015-05-28 47 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,以便调试程序在引发异常(不只是未处理)时中断。