Megosztás a következőn keresztül:


A felmondás kezelése a következő helyen: System.CommandLine

Fontos

System.CommandLine jelenleg előzetes verzióban érhető el, és ez a dokumentáció a 2.0-s bétaverzió 4-es verziójához készült. Egyes információk az előzetes termékre vonatkoznak, amelyek a kiadás előtt jelentősen módosíthatók. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.

A leállítás kezeléséhez injektáljon egy példányt CancellationToken a kezelőkódba. Ezt a jogkivonatot ezután továbbíthatja a kezelőn belülről hívott aszinkron API-knak, ahogyan az alábbi példában látható:

static async Task<int> Main(string[] args)
{
    int returnCode = 0;

    var urlOption = new Option<string>("--url", "A URL.");

    var rootCommand = new RootCommand("Handle termination example");
    rootCommand.Add(urlOption);

    rootCommand.SetHandler(async (context) =>
        {
            string? urlOptionValue = context.ParseResult.GetValueForOption(urlOption);
            var token = context.GetCancellationToken();
            returnCode = await DoRootCommand(urlOptionValue, token);
        });

    await rootCommand.InvokeAsync(args);

    return returnCode;
}

public static async Task<int> DoRootCommand(
    string? urlOptionValue, CancellationToken cancellationToken)
{
    try
    {
        using (var httpClient = new HttpClient())
        {
            await httpClient.GetAsync(urlOptionValue, cancellationToken);
        }
        return 0;
    }
    catch (OperationCanceledException)
    {
        Console.Error.WriteLine("The operation was aborted");
        return 1;
    }
}

Az előző kód egy túlterhelést SetHandler használ, amely egy InvocationContext-példányt kap egy vagy több IValueDescriptor<T> objektum helyett. A InvocationContext rendszer az és a CancellationToken ParseResult objektum lekérésére szolgál. ParseResult argumentum- vagy beállításértékeket adhat meg.

A mintakód teszteléséhez futtassa a parancsot egy olyan URL-címmel, amely egy kis időt vesz igénybe a betöltéshez, és mielőtt befejeződik a betöltés, nyomja le a Ctrl C billentyűkombinációt.+ MacOS rendszeren nyomja le a Command Period(.) billentyűt+. Példa:

testapp --url https://learn.microsoft.com/aspnet/core/fundamentals/minimal-apis
The operation was aborted

A lemondási műveletek közvetlenül CancellationToken.Register a módszerrel is hozzáadhatók.

A folyamat kilépési kódjának beállításának alternatív módjáról további információt a kilépési kódok beállítása című témakörben talál.

Lásd még

System.CommandLine Áttekintés