2010-04-22 131 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會跳過斷點,甚至在我僅告訴它轉到下一個語句時恢復執行。代碼仍然會被執行,但它並沒有讓我通過它。