我有一個winforms項目取決於自定義庫。除了我無法確定的問題之外,所有與該應用程序的關聯都可以正常工作。基本上我有從另一形式將其顯示爲一個對話創建的形式:破解dubugger不「工作」..代碼執行繼續
DataItems.ImportForm frmImportTextDelimited = new DataItems.ImportForm();
frmImportTextDelimited.ShowDialog();
此對話框形式從SqlServer的使用下面的函數,它是從在該溶液中類庫填充下拉列表:
public class AuthorityTypeSearcher
{
public List<IntValuePair> GetAllAuthorityTypes()
{
List<IntValuePair> returnList = new List<IntValuePair>();
using (var conn = new SqlConnection(Globals.ConnString))
{
var cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT FROM tblAuthorityTypes";
conn.Open();
IntValuePair ivp;
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
ivp = new IntValuePair();
ivp.TheInt = Convert.ToInt32(rdr["ID"]);
ivp.TheValue = rdr["AuthorityType"].ToString() ;
}
}
return returnList;
}
這個函數永遠沒有返回值,所以我設置一個斷點就行了:
conn.Open();
當代碼執行時,Visual Studio的正常休息,以這條線。是什麼讓我瘋狂的是,當我邁出第一步到行:
SqlDataReader rdr = cmd.ExecuteReader();
調試將不會前進到下一行,並執行代碼似乎回到UI(顯示格式)。奇怪的是,如果我與表單交互(即單擊填充另一個字段的表單上的按鈕),則調試器再次中斷,然後返回Visual Studio,該工作室正確地「中斷」到與該操作相關的行。無論出於何種原因,當我到達創建數據讀取器的行時,代碼執行看起來像是「離開」庫並返回到winforms應用程序。
當代碼執行似乎已經返回到UI時,如果我返回到Visual Studio看起來代碼執行正在繼續,至少我不能點擊「繼續」(播放)。代碼執行不是「暫停」的。
什麼也奇怪的是,如果我關閉窗體(對話),它打破回調試器從上線的主要形式行:
frmImportTextDelimited.ShowDialog();
好像我還在調試。
希望這有道理?我無法弄清楚爲什麼在調試的時候,我無法跨越創建數據讀取器的那一行,爲什麼代碼執行返回到UI,但是在對話框關閉的情況下返回調試器。沒有錯誤被拋出。
感謝您的任何建議!
它只是一個錯字?你的sql查詢沒有列表要返回。 – Steve
你有''SELECT FROM tblAuthorityTypes「'作爲你的查詢。你的意思是,''SELECT * FROM tblAuthorityTypes'''? – Brian
錯字,但對於踢我更新它爲「選擇ID,AuthorityType從tblAthorityTypes」具有相同的結果。 – rune711