Gall stopwats roi'r gorau i aros tra bo'r cais HTTP yn parhau. Darparwch ganslo i'r gweithrediad ei hun pan fo gan gynnig drwy brocsi gyllideb fwriadedig.

Ar gyfer cymhwysiad .NET modern sydd â HttpClient wedi'i ffurfweddu ar gyfer procsi eisoes:

using var budget = new CancellationTokenSource(TimeSpan.FromSeconds(5));
using var response = await client.GetAsync(
    targetUrl,
    HttpCompletionOption.ResponseHeadersRead,
    budget.Token);
response.EnsureSuccessStatusCode();
string body = await response.Content.ReadAsStringAsync(budget.Token);

Mae'r un gyllideb yn dechrau cyn y gosodiad ac yn parhau'n weithredol tra darllenir y corff. Mae ResponseHeadersRead yn dychwelyd rheolaeth ar ôl y pennawdau, felly nid yw terfyn amser cwblhau HttpClient ei hun yn diffinio'r gyllideb ddarllen corff hwyrach ar ei ben ei hun.

Cadwch ganslo ar wahân i statws HTTP a gwallau cludo. Gall OperationCanceledException ddod o'r tocyn a gyflenwir neu o derfyn amser arall wedi'i ffurfweddu; archwiliwch y ffynhonnell ganslo berthnasol yn hytrach na nodi pob methiant fel procsi marw.

Ailddefnyddiwch y cleient sy'n berchen ar y llwybr procsi hwn. Nid oes rhaid i ganslo ymgais olygu ailadeiladu pwll cysylltiadau cyfan ar gyfer pob cais dilynol.

Mae'r enghraifft yn byffro corff ymateb terfynol. Dylai lawrlwytho ffrydio basio'r tocyn drwy ei ddolen copïo ffrwd a rhyddhau'r ymateb ar bob llwybr allan.

Mae canslo'n mynegi polisi gweithredu, nid addewid cloc wal union ar gyfer pob gweithred lwyfan sylfaenol. Ceisiwch osgoi ei ddisodli â dolen arolygu ddiddiwedd ar Task.IsCompleted.

Erthyglau cysylltiedig