Implement IProgress<T> in ProgressDialog #58
Labels
enhancement
New feature or request
hacktoberfest
https://hacktoberfest.digitalocean.com
help wanted
Extra attention is needed
up-for-grabs
Milestone
Discussed in #12 (comment)
Originally posted by vpenades November 25, 2020
The use case most of the times is going to be background tasks initialized with an Object value that can be cast to multiple versions of
IProgress<T>
so they can report back the progress of the backgrond task.I think the interface is not widely used because it's not very well known, but since
IProgress<T>
exists from quite some time, I did a small search to see how people is using it, and I found: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:
Additionally, the current
IProgress<int>
andIProgress<string>
could cache the content so they're not mutually exclusive; the current code already caches the progress, but it should do the same with the text. So a background task could call these interfaces consecutively without loosing the value set by the previous call on the other property.The text was updated successfully, but these errors were encountered: