'de sonlandırmayı işleme System.CommandLine

Önemli

System.CommandLine şu anda ÖNİzLEME aşamasındadır ve bu belgeler 2.0 beta 4 sürümüne yöneliktir. Bazı bilgiler, yayımlanmadan önce önemli ölçüde değiştirilebilen yayın öncesi ürünle ilgilidir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.

Sonlandırmayı işlemek için işleyici kodunuz içine bir CancellationToken örnek ekleyin. Bu belirteç, aşağıdaki örnekte gösterildiği gibi işleyicinizin içinden çağırdığınız zaman uyumsuz API'lere geçirilebilir:

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;
    }
}

Yukarıdaki kod, bir veya daha fazla IValueDescriptor<T> nesne yerine Bir InvocationContext örneği alan bir SetHandleraşırı yükleme kullanır. InvocationContext ve ParseResult nesnelerini almak CancellationToken için kullanılır. ParseResult bağımsız değişken veya seçenek değerleri sağlayabilir.

Örnek kodu test etmek için, komutunu yüklenmesi biraz zaman alacak bir URL ile çalıştırın ve yüklenmesi tamamlanmadan önce Ctrl C tuşuna+basın. macOS'ta Komut+Dönemi(.)'ne basın. Örneğin:

testapp --url https://video2.skills-academy.com/aspnet/core/fundamentals/minimal-apis
The operation was aborted

İptal eylemleri doğrudan yöntemi kullanılarak CancellationToken.Register da eklenebilir.

İşlem çıkış kodunu ayarlamanın alternatif bir yolu hakkında bilgi için bkz . Çıkış kodlarını ayarlama.

Ayrıca bkz.

System.CommandLine Genel bakış