2010-04-22 287 views
2

我遇到一个代码不顺序执行,虽然我没有使用线程的问题。我的代码调用一个函数,当我在函数内部调试时,它返回到函数调用后面的代码行,尽管函数没有完成执行,我不知道为什么会发生这种情况,有什么想法?提前致谢。代码行不按顺序执行

workflow.SaveControlTiempo(solEntity, traId, Usuario.GetUsrId()); // this is my function 

// code execution continues here even if the function hasn't finished 
// and since the function hasn't finished I get an exception 
RadAjaxManager.GetCurrent(Page).RadAlert("Solicitud Transicionada con \u00c9xito"); 

var javascripFunction = "CloseWindow('Solicitud <b>{0}</b><br />Transicionada con \u00c9xito.<li> <b>Etapa Destino: </b>{1}<li><b>Usuario: </b>{2}');"; 
javascripFunction = string.Format(javascripFunction, solEntity.SOL_CODIGO, solEntity.WKF_ETP_ETAPAS.ETP_DES, 
DNNUtil.GetInstance().GetUserName(solEntity.USR_ID)); 
+1

您是否运行过Debug或Release版本? – Joey 2010-04-22 21:55:18

+0

你在开始“RadAjaxManager”的行上有断点吗? – 2010-04-22 22:00:33

回答

0

我发现了这个问题,开发人员创建了一个单例,并且在页面中使用静态变量来延迟加载单例,看起来由于这个变量是静态的,所以当请求结束时它们不会被处置,调试器中的奇怪行为。谢谢你的答案。

1

这可能是因为您正在触发控制返回给调用者的函数中的一行。最明显的例子是return关键字,但它不是唯一的方法。还要检查代码中是否有类似yield break的内容。例外也可以给出意想不到的退出点,尽管这似乎并没有发生,因为没有捕捉或最终阻止。

另请注意,调试信息有时可能与源代码不同步,以便它看起来像从返回不可能的位置返回。为了解决这个问题,重新从干净的所有文件。

1

这可能是你的调试器的问题。在调试期间,我曾遇到过问题,因为Visual Studio会跳过断点,甚至在我仅告诉它转到下一个语句时恢复执行。代码仍然会被执行,但它并没有让我通过它。