cela pourrait être très utile si ProgressDialog implémentait ces interfaces :
System.IProgress<int>
pour signaler le pourcentage de progression
System.IProgress<Text>
pour signaler les progrès textuels
Ainsi, l'objet ProgressDialog peut être transmis en tant qu'objet simple aux tâches en cours d'exécution et converti en IProgress<int>
et IProgress<Text>
pour les rapports de progression
Merci @vpenades , cela semble être une excellente idée.
Faites-moi savoir si vous souhaitez essayer et envoyer un PR, sinon je m'y mettrai bientôt pour la prochaine version.
Prêt pour les relations publiques...
@vpenades Ookii.Dialogs.Wpf prend en charge 5 .NET ainsi que .NET 3.1 de base, donc je pensais que je vous ping maintenant si vous voulez jamais commencer à discuter des améliorations possibles au IProgress<T>
mise en œuvre
ps : ne vous sentez pas obligé de répondre. Ceci est juste un ping amical étant donné votre intérêt antérieur pour cela.
La plupart du temps, le cas d'utilisation sera des tâches d'arrière-plan initialisées avec une valeur d'objet pouvant être convertie en plusieurs versions de IProgress<T>
afin qu'elles puissent rendre compte de la progression de la tâche d'arrière-plan.
Je pense que l'interface n'est pas très utilisée car elle n'est pas très connue, mais comme IProgress<T>
existe depuis un certain temps, j'ai fait une petite recherche pour voir comment les gens l'utilisent, et j'ai trouvé :
```C#
IProgress
IProgress
It is very tempting to have a structure that keeps all the information required by the progress dialog (percent, text, description), but this _must be avoided_ because that would mean the caller needs to fill that structure, which would force it to have a dependency on the ookii library, this is probably not desirable for background tasks, or pure code libraries that don't want to depend on an UI library.
So, in order to pass rich progress information, we need to use only BCL types and collections. Unfortunately, `IProgress<T>` does not define a standard.... but in general I guess everybody will expect (int Percent, string Text, string Description)
So, I would propose adding these interfaces:
```c#
IProgress<float> // by far, the implementation I've found most occurences searching on github.
IProgress< KeyValuePair<string,object> > // where key is the name of the property to set (percent, text, desc)
De plus, les IProgress<INT>
et IProgress<STRING>
actuels pourraient mettre en cache le contenu afin qu'ils ne s'excluent pas mutuellement ; le code actuel met déjà en cache la progression, mais il devrait faire de même avec le texte. Ainsi, une tâche en arrière-plan pourrait appeler ces interfaces consécutivement sans perdre la valeur définie par l'appel précédent sur l'autre propriété.