我正在開發一個使用 Google Sheets Api 的 .NET Core 應用程式。我正在使用異步任務來避免凍結 guis。我的麻煩從這里開始。這些異步任務連接 Google Sheets 并回傳一些值。任務之一:
public async Task<String> KullaniciBilgileriniAl()
{
String range = "Kullanici Bilgileri";
SpreadsheetsResource.ValuesResource.GetRequest request = this.service.Spreadsheets.Values.Get(spreadsheetId, range);
ValueRange response = await Task.Run(() => request.Execute());
IList<IList<Object>> values = response.Values;
String DataKullaniciAdi = (String) values[1][0];
String DataSifre = (String)values[1][1];
return DataKullaniciAdi DataSifre;
}
如果沒有互聯網連接,我想要做的是捕捉例外。如果沒有連接,此行會出現錯誤:
ValueRange response = await Task.Run(() => request.Execute());
我試過將此行添加到 try-catch 陳述句中,如下所示:
try
{
ValueRange response = await Task.Run(() => request.Execute());
IList<IList<Object>> values = response.Values;
String DataKullaniciAdi = (String)values[1][0];
String DataSifre = (String)values[1][1];
return DataKullaniciAdi DataSifre;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex);
}
但是任務在不同的執行緒上運行。所以它沒有用。
總之,我需要捕獲在 Task.Run() 函式中出現的任何例外。我怎樣才能做到這一點?
uj5u.com熱心網友回復:
那么首先洗掉,Task.Run因為它沒有任何意義。您正在創建一個任務來運行不需要的同步方法。但是,如果您出于任何原因確實想將其保留在那里,請在任務中捕獲例外:
ValueRange response = await Task.Run(() => {
try {
return request.Execute();
} catch Exception(Exception e){
return null;
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/356569.html
