การอัปเดตที่ Haack อ้างถึงนั้นเป็นของฉัน :) ดังนั้นฉันจะแสดงวิธีการใช้งานให้คุณดูเพราะจริงๆแล้วมันง่ายมาก ก่อนหน้านี้คุณมีวิธีการเช่นExecuteAsyncGetที่จะส่งกลับชนิด RestSharp RestRequestAsyncHandleที่กำหนดเองที่มีชื่อว่า ไม่สามารถรอประเภทนี้เป็นประเภทการasync/awaitทำงานTaskและTask<T>ผลตอบแทน คำขอดึงของฉันเพิ่มโอเวอร์โหลดให้กับเมธอด async ที่มีอยู่ซึ่งส่งคืนTask<T>อินสแตนซ์ เหล่านี้Task<T>เกินได้เพิ่ม "งาน" สตริงเพิ่มชื่อของพวกเขาสำหรับตัวอย่างTask<T>เกินสำหรับการที่เรียกว่าExecuteAsyncGet ExecuteGetTaskAsync<T>สำหรับการTask<T>โอเวอร์โหลดใหม่แต่ละครั้งมีวิธีการหนึ่งที่ไม่จำเป็นต้องCancellationTokenระบุและมีวิธีหนึ่งที่ทำ
ตอนนี้เป็นตัวอย่างจริงเกี่ยวกับวิธีการใช้งานซึ่งจะแสดงวิธีใช้ a 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>อินสแตนซ์ เมื่อส่งคืน a Taskคุณสามารถใช้awaitคำหลักในวิธีนี้และรับTask<T>ประเภทที่ส่งคืนกลับมา (ในกรณีนี้IRestResponse)
คุณสามารถค้นหารหัสได้ที่นี่: http://dotnetfiddle.net/tDtKbL