async / await와 함께 RestSharp를 사용하는 방법
및와 함께 RestSharp를 사용하는 비동기 C # 코드의 최신 예제를 찾기 위해 고군분투 async
하고 await
있습니다. 나는이 것을 알고 Haack의 최근 갱신하고 있지만 새로운 방법을 사용하는 방법을 모르겠어요.
또한 작업을 취소 할 수 있도록 취소 토큰을 제공하려면 어떻게해야합니까 (예 : 사람이 기다리는 데 지쳐서 앱 UI에서 취소 버튼을 누르는 경우).
글쎄요, Haack이 언급하는 업데이트는 제가 만든 것입니다. :) 실제로 사용하는 방법을 보여 드리겠습니다. 실제로 매우 간단합니다. 이전에는 ExecuteAsyncGet
라는 RestSharp 사용자 지정 유형을 반환하는 것과 같은 메서드가있었습니다 RestRequestAsyncHandle
. 이 유형은 async/await
작업 Task
및 Task<T>
반환 유형 으로 기다릴 수 없습니다 . 내 풀 요청은 Task<T>
인스턴스 를 반환하는 기존 비동기 메서드에 오버로드를 추가했습니다 . 이러한 Task<T>
오버로드에는 이름에 추가 된 "작업"문자열 이 있습니다. 예를 들어에 대한 Task<T>
오버로드 ExecuteAsyncGet
는라고 ExecuteGetTaskAsync<T>
합니다. 각각의 새 Task<T>
오버로드에 대해 CancellationToken
를 지정할 필요가없는 메서드가 하나 있고 지정 되는 메서드 가 있습니다.
이제 사용 방법에 대한 실제 예제를 살펴보면 다음과 같이 사용하는 방법도 보여줍니다 CancellationToken
.
private static async void Main()
{
var client = new RestClient();
var request = new RestRequest("http://www.google.com");
var cancellationTokenSource = new CancellationTokenSource();
var restResponse =
await client.ExecuteTaskAsync(request, cancellationTokenSource.Token);
// Will output the HTML contents of the requested page
Console.WriteLine(restResponse.Content);
}
인스턴스 ExecuteTaskAsync
를 반환하는 오버로드를 사용합니다 Task<IRestResponse>
. 를 반환 하므로이 메서드에 키워드를 Task
사용하고 의 반환 된 유형 (이 경우 )을 반환 할 수 있습니다 .await
Task<T>
IRestResponse
코드는 여기에서 찾을 수 있습니다. http://dotnetfiddle.net/tDtKbL
제 경우에는 제대로 작동하려면 Task.Wait ()를 호출해야했습니다. 그러나 CancellationTokenSource를 매개 변수로 사용하지 않는 버전을 사용했습니다.
private static async void Main()
{
var client = new RestClient();
var request = new RestRequest("http://www.google.com");
Task<IRestResponse> t = client.ExecuteTaskAsync(request);
t.Wait();
var restResponse = await t;
Console.WriteLine(restResponse.Content); // Will output the HTML contents of the requested page
}
참고 URL : https://stackoverflow.com/questions/21779206/how-to-use-restsharp-with-async-await
'developer tip' 카테고리의 다른 글
JSON.parse 대 eval () (0) | 2020.09.07 |
---|---|
서비스 시작을위한 Android onCreate 또는 onStartCommand (0) | 2020.09.07 |
약속, 추가 매개 변수를 전달한 다음 연결 (0) | 2020.09.07 |
C #으로 MS Exchange 이메일 읽기 (0) | 2020.09.07 |
.h 파일에는 무엇을 넣어야합니까? (0) | 2020.09.07 |