2015-05-25 56 views
2

我正在嘗試使用Polly來處理由我的WebRequest拋出的異常。使用Polly C#庫來處理異常的正確方法

這是我的實現。

var generalExceptionPolicy=Policy.Handle<Exception>().WaitAndRetry(2, retryAttempt => 
        TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)),(exception,timespan)=>{ 

     if(attempt++ == 2) 
     { 
      Toast.MakeText(Activity,"No Connection Bro",ToastLength.Short).Show(); 


     } 
    }); 
    var test = await generalExceptionPolicy.ExecuteAsync(()=>PostPreLogin (view.FindViewById<EditText> (Resource.Id.mobileTextBox).Text)); 

我得到了重試的工作。但是我想知道的是在最後一次嘗試之後我會在哪裏得到回調?我正在策略定義部分獲取回調,其中我試圖顯示Toast消息。但那只是在審判之間。我最後一次審判後沒有收到。

此外,我的用戶界面在最後一次試用後死機。由於Exception,可能因爲ExecuteAsyncTask未完成。如果是這樣,那麼使用Polly庫的正確方法是什麼?

這是我試圖用波利

public async Task<string> PostPreLogin(string userName) 
    { 
     var preloginvalue = await Account.PreLoginPost (userName); 
     return preloginvalue; 

    } 

回答

1

處理方法,我認爲你是後ExecuteAndCapture代替Execute什麼:

generalExceptionPolicy.ExecuteAndCapture(() => DoSomething()); 

Check this out瞭解更多詳情。