.NET Framework Rapport de progression simple


Exemple

IProgress<T> peut être utilisé pour signaler la progression de certaines procédures à une autre procédure. Cet exemple montre comment créer une méthode de base indiquant ses progrès.

void Main()
{
    IProgress<int> p = new Progress<int>(progress =>
    {
        Console.WriteLine("Running Step: {0}", progress);
    });
    LongJob(p);
}

public void LongJob(IProgress<int> progress)
{
    var max = 10;
    for (int i = 0; i < max; i++)
    {
        progress.Report(i);
    }
}

Sortie:

Running Step: 0
Running Step: 3
Running Step: 4
Running Step: 5
Running Step: 6
Running Step: 7
Running Step: 8
Running Step: 9
Running Step: 2
Running Step: 1

Notez que lorsque vous exécutez ce code, vous pouvez voir des numéros être sortis dans le désordre. En effet, la IProgress<T>.Report() est exécutée de manière asynchrone et ne convient donc pas aux situations dans lesquelles la progression doit être signalée dans l’ordre.