Looking for c# Keywords? Try Ask4Keywords

C# Language Асинхронный / Await


пример

Ниже приведен простой пример того, как использовать async / await для выполнения некоторых интенсивных операций времени в фоновом режиме, сохраняя при этом возможность делать некоторые другие вещи, которые не нужно ждать от времени, необходимого для завершения.

Однако, если вам нужно позже работать с результатом интенсивного времени, вы можете сделать это, ожидая выполнения.

public async Task ProcessDataAsync()
{
    // Start the time intensive method
    Task<int> task = TimeintensiveMethod(@"PATH_TO_SOME_FILE");

    // Control returns here before TimeintensiveMethod returns
    Console.WriteLine("You can read this while TimeintensiveMethod is still running.");

    // Wait for TimeintensiveMethod to complete and get its result
    int x = await task;
    Console.WriteLine("Count: " + x);
}

private async Task<int> TimeintensiveMethod(object file)
{
    Console.WriteLine("Start TimeintensiveMethod.");

    // Do some time intensive calculations...
    using (StreamReader reader = new StreamReader(file.ToString()))
    {
        string s = await reader.ReadToEndAsync();

        for (int i = 0; i < 10000; i++)
            s.GetHashCode();
    }
    Console.WriteLine("End TimeintensiveMethod.");

    // return something as a "result"
    return new Random().Next(100);
}