2017-09-14 68 views
0

我找不到使用GetAsyncPostAsync方法的任何示例。我嘗試實現它:如何在RestSharp中使用GetAsync或PostAsync

private static Task<IRestResponse> GetResultAsync(RestClient client, RestRequest request) 
{ 
    var taskSource = new TaskCompletionSource<IRestResponse>(); 
    client.GetAsync(request, response => 
    { 
     taskSource.SetResult(response); 
    }); 
    return taskSource.Task; 
} 

,我得到一個錯誤,因爲我不知道什麼是必須爲RestRequestAsyncHandle參數傳遞更多信息:

委託「行動< IRestResponse,RestRequestAsyncHandle> 「不拿1個 參數

有人能告訴我我應該爲RestRequestAsyncHandle通過?

回答

2

我很努力地找到文檔中的任何特定內容,但看起來您的問題更多的是您期望必須提供RestRequestAsyncHandle。相反,它看起來像你需要在回調中「拿」一個。 e.g:

client.GetAsync(request, (response, handle) => 
{ 
    taskSource.SetResult(response); 
}); 

codeRestRequestAsyncHandle表明,它含有一個Abort功能,你可以從你的處理程序中調用,如果需要的話。

我不能保證這是否是在RestSharp中使用異步的正確方法,但我認爲這解決了您的特定錯誤。 @ Fildor的回答和下面的評論提出了一個更正確的方法來處理整個異步內容。

+0

這將是正確的,*但*:混合TAP和良好的醇'異步並不是一個好主意。 RestClient提供了一個TAP API - 那麼爲什麼不使用它呢? – Fildor

+0

@Fildor我完全同意。 –

2

如果你想走路基於任務的異步路徑,然後做這一切的方式:

private static Task<IRestResponse> GetResultAsync(RestClient client, RestRequest request) 
{ 
    return client.ExecuteGetTaskAsync(request); 
} 

柯克給你錯過了有關AsyncHandle在你的方法有什麼好解釋的,所以我不會在這裏重複。

看着github上的代碼,他們似乎實際上已經完成了「引擎蓋下」,你試過了什麼。所以我不會重新發明輪子。