代码行不遵循顺序执行

时间:2010-04-22 21:51:56

标签: c# .net multithreading

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

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));

3 个答案:

答案 0 :(得分:1)

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

另请注意,调试信息有时可能与源代码不同步,因此看起来您正在从无法返回的位置返回。要解决此问题,请从clean中重建所有文件。

答案 1 :(得分:1)

这可能是您的调试器的问题。我在调试之前遇到过问题,Visual Studio会跳过断点甚至恢复执行,因为我只是告诉它转到下一个语句。代码仍然会被执行,它只是没有让我介入它。

答案 2 :(得分:0)

我发现了问题,开发人员创建了一个单例,并且在页面中使用静态变量来延迟加载单例,似乎因为这个变量是静态的,所以当请求结束并且导致了调试器中的奇怪行为。谢谢你的答案。