我有以下代碼。對connection.OpenAsync()的調用沒有任何異常退出程序。即使是最後的調用者方法也不會被調用。程序是針對.NET45的任何想法?SqlConnection.OpenAsync()退出而不拋出異常
更新:這是與.Wait()一起使用的父代碼。當connection.OpenAsync()在下面的子方法中調用時,它在父代碼中沒有.Wait()時退出。
static void Main(string[] args)
{
UpdateSqlDatabase updateSqlDatabase = new UpdateSqlDatabase(args);
updateSqlDatabase.UpdateDatabaseSchemaAsync().Wait();
}
一系列異步方法的調用之後:
public async Task<T> ExecuteQueryAsync<T>(string connectionString, string commandText, IDictionary<string, object> parameters, Func<SqlDataReader, T> rowMapFunc)
{
using (var connection = new SqlConnection(connectionString))
{
try
{
await connection.OpenAsync();
}
catch (Exception ex)
{
}
SqlCommand command = connection.CreateCommand();
command.CommandType = CommandType.Text;
command.CommandText = commandText;
if (parameters != null)
{
foreach (var item in parameters)
{
command.Parameters.AddWithValue(item.Key, item.Value);
}
}
SqlDataReader reader = await command.ExecuteReaderAsync();
T retObj = default(T);
while (await reader.ReadAsync())
{
retObj = rowMapFunc(reader);
}
return retObj;
}
}
不這樣做:'趕上(例外){}',你是搬起石頭砸自己的腳。畢竟,什麼是例外細節? – Noseratio
當我調試代碼永遠不會到達。我添加了這個catch來看看哪裏出了問題(不會成爲我的代碼的一部分)。本質上,當我調試執行connection.OpenAsync()只是退出程序。即控制檯應用程序只是退出而沒有任何錯誤/異常。 catch代碼塊在這段代碼中從未被擊中。 – ksj
像這樣更改您的代碼:http://pastebin.com/ZmsA3k4g。在「A」,「B」,「C」,「D」行上設置斷點並在調試器下運行。什麼斷點受到打擊? – Noseratio