var options = new ParallelOptions
{
    MaxDegreeOfParallelism = 8,
    CancellationToken = cancellationToken
};
await Parallel.ForEachAsync(endpoints, options,
    async (endpoint, token) =>
    {
        var result = await ProbeAsync(endpoint, target, token);
        observations.Add(result);
    });

Brûk in beheind arbeiderspoel ynstee fan foar elk einpunt in aparte taak te starten. Foar kontrôles tsjin tastiene iepenbiere doelen leveret de fergees proxylist kandidaatrigels; hâld by it bouwen fan 'e probe it protokol fan elk item oan. Dit .NET-planningfragmint giet út fan in proxybewust ProbeAsync en in triedfeilige observations-sammelder. Acht is in yllustrative grins, gjin metten optimum. De probe hat noch altyd grinzen per besykjen en in ôfbrek fan 'e hiele taak nedich.

Bewarje elk foltôge resultaat by syn ynfier, ek as de foltôgingsfolchoarder oars is. Registrearje protokol, einpunt, doel, metoade, ferstrutsen tiid en útkomst. Ferbiningsflater, wegere proxy-oanmelding, wegere CONNECT en in ûntfongen antwurd fan 'e side binne ferskillende waarnimmings.

In iepen TCP-poarte bewiist gjin proxy-ûnderhanneling. It proxyadres as side ophelje ferskilt ek fan it brûken derfan om it doel op te freegjen.

Kies it doel en de metoade nei de fereaske mooglikheid. HEAD kin lichemsferkear spare, mar bewiist net dat GET brûkbere ynhâld weromjout; in side kin it iene wegerje en it oare tastean. HTTPS foeget CONNECT en TLS fan 'e bestimming ta, dy't yn gewoan HTTP ûntbrekke. In útgeand adres is in oare waarnimming oan 'e bestimmingskant, los fan 'e ynstelde yngong.

Beheind wurk hâldt de kontrolearder tsjin om syn eigen sockets, ûnthâld of plener út te putten foardat er de rûte beoardielje kin. In stadich resultaat bliuwt nuttich foar it seleksjebelied sûnder te dwaan as makket ien slagge bestimming in einpunt universeel goed.

Relatearre artikelen