I tworzenie przykładowego przykładu połączenia z linkiem za pomocą WebClient przy użyciu async i czekam na metodę teraz chcę dołączyć również anulować funkcję asynchronicznego połączenia. Ale nie jestem w stanie uzyskać tokena CancellationTokenSource i dołączyć do tego tokena DownloadStringTaskAsync. Oto jest mój kod może ktoś mi powiedzieć, jak to osiągnąć.Jak załączyć metodę AnulowanieTokenSource do pobieraniaStringTaskAsync i anulować wywołanie asynchroniczne?
private async void DoWork()
{
this.Cursor = Cursors.WaitCursor;
Write("DoWork started.");
cts = new CancellationTokenSource();
WebClient wc = new WebClient();
string result = await wc.DownloadStringTaskAsync(new Uri("http://gyorgybalassy.wordpress.com"));
if (result.Length < 100000)
{
Write("The result is too small, download started from second URL.");
result = await wc.DownloadStringTaskAsync(new Uri("https://www.facebook.com/balassy"));
}
Write("Download completed. Downloaded bytes: " + result.Length.ToString());
Write("DoWork ended.");
this.Cursor = Cursors.Default;
}
private void btnCancel_Click(object sender, EventArgs e)
{
Write("Cancellation started.");
this.cts.Cancel();
Write("Cancellation ended.");
}
Kiedy nazywa mój przycisk Anuluj cts.Cancel wywołanie DownloadStringTaskAsync nie zostanie anulowane. Dlaczego przycisk anulowania nie może anulować wywołań asynchronicznych?
Ty nie używasz 'CancellationTokeSource' w jakikolwiek sposób, w jaki jest' WebClient' powinien wiedzieć powinien zrezygnować, jeśli nie powiedzieć, że go ? – svick
Pozdrowienia dla twojej odpowiedzi. Ale próbowałem przekazać token jako parametr metody DownloadStringTaskAsync, ale nie ma przeciążenia dla tej metody, która go obsługuje. W związku z tym nie otrzymałem sposobu używania tokenu anulowania za pomocą metody DownloadStringTaskAsync. Czy możesz zaproponować mi kilka dobrych książek, aby przeczytać wszystkie nowe aktualizacje w C# z możliwościami TAP. –