我有一組異步方法用於處理大量的數據庫並以高速方式編譯並編譯。大多數情況下,這些工作都非常棒,併爲我的軟件創造了奇蹟。但是,最近我遇到了一個小問題:用戶偶爾會發現一些問題,並且在獲取信息之前,軟件拉動數據的時間間隔變得巨大,數據適配器超時。通常,在同步方法中,您可以使用try/catch來處理這些問題,但我試過這種方法無濟於事。有沒有辦法異步處理異常,只是拋出一個同步方法,所以我趕上所有的try/catch可以正常工作?DataAdapter填充異步異常
這是數據適配器異步方法我用一個例子:
private async Task<DataTable> WWQuery2Run
(string A, string B, string C, string D)
{
using (var conn = new System.Data.SqlClient.SqlConnection(ReportResources.ConnString))
{
var temp = new DataTable();
var DA = new SqlDataAdapter(string.Format(ReportResources.Instance.CureInfoQueries["WWQuery2"], A, B, C, D), conn);
await Task.Run(() => DA.Fill(temp));
return temp;
}
}
編輯:
之後我試圖從超時,這是處理異常的一切煩惱實現這不是一種好的做法。我繼續添加一個方法來計算持續時間,然後再進入顯示的異步方法,並警告用戶長度並給他們一箇中止編譯的選項。有了這個,我將查詢的超時時間增加到了一個數量,該數額應該覆蓋除了最壞的情況之外的所有情況,以便用戶希望繼續。我還在程序中的項目上添加了計算持續時間的說明,以便他們知道在嘗試查詢和編譯之前它已經很久了。
謝謝@穆拉德加里扎達爲您的協助。
這是有效的,但是,我寧願它超時,然後提醒用戶有可能的問題。我得到的是,我可能要求一些不正確的東西,但我的用戶有點朦朧,並且會認爲軟件有問題,而不是在時間過度的情況下出現操作員錯誤。 – ARidder101
這是非常簡單的,請轉到鏈接:https://msdn.microsoft.com/en-us/library/dd537614(v=vs.110).aspx – Murad
您可以舉一個例子,說明該鏈接中的方法將工作?我曾多次嘗試使該方法有效,但對我來說,該鏈接中的方法似乎不適用於異步方法/任務,因此對我的問題沒有任何幫助。 – ARidder101