Ookii-dialogs-wpf: ProgressDialog doit implémenter Progress<t/>

Créé le 25 mars 2020  ·  4Commentaires  ·  Source: ookii-dialogs/ookii-dialogs-wpf

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

enhancement help wanted

Tous les 4 commentaires

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// progrès signalé dans des valeurs comprises entre 0 et 1
IProgress// progrès signalé dans des valeurs comprises entre 0 et 100


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é.

Cette page vous a été utile?
0 / 5 - 0 notes