Ookii-dialogs-wpf: يجب أن يقوم ProgressDialog بتنفيذ التقدم<t/>

تم إنشاؤها على ٢٥ مارس ٢٠٢٠  ·  4تعليقات  ·  مصدر: ookii-dialogs/ookii-dialogs-wpf

قد يكون مفيدًا جدًا إذا قام ProgressDialog بتنفيذ هذه الواجهات:

System.IProgress<int> للإبلاغ عن نسبة التقدم
System.IProgress<Text> للإبلاغ عن التقدم النصي

لذلك يمكن تمرير كائن ProgressDialog ككائن عادي إلى المهام قيد التشغيل ، ويتم تحويله إلى IProgress<int> و IProgress<Text> لتقرير التقدم

enhancement help wanted

ال 4 كومينتر

شكرًا vpenades ، تبدو هذه فكرة رائعة.

اسمحوا لي أن أعرف ما إذا كنت ترغب في أخذ طعنة في ذلك وإرسال PR ، وإلا فسأصل إليه قريبًا للإصدار التالي.

العلاقات العامة جاهزة ...

يدعم vpenades Ookii.Dialogs.Wpf الآن .NET 5 بالإضافة إلى .NET Core 3.1 ، لذلك اعتقدت أنني سأرسل IProgress<T>

ملاحظة: لا تشعر بأنك مضطر للرد. هذا مجرد اتصال ودي نظرًا لاهتمامك المسبق بهذا الأمر.

ستكون حالة الاستخدام في معظم الأوقات عبارة عن مهام خلفية تمت تهيئتها بقيمة كائن يمكن تحويلها إلى إصدارات متعددة من IProgress<T> حتى يتمكنوا من الإبلاغ عن تقدم مهمة backgrond.

أعتقد أن الواجهة ليست مستخدمة على نطاق واسع لأنها ليست معروفة جيدًا ، ولكن نظرًا لوجود IProgress<T> منذ فترة طويلة ، فقد أجريت بحثًا صغيرًا لمعرفة كيفية استخدام الأشخاص لها ، ووجدت:

ج #
IProgress// تم الإبلاغ عن التقدم في القيم بين 0-1
IProgress// تم الإبلاغ عن التقدم في القيم بين 0-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)

بالإضافة إلى ذلك ، فإن IProgress<INT> و IProgress<STRING> الحاليين يمكن أن يخزنوا المحتوى مؤقتًا حتى لا يكونا منفصلين ؛ يقوم الكود الحالي بالفعل بتخزين التقدم مؤقتًا ، ولكن يجب أن يفعل الشيء نفسه مع النص. لذلك يمكن لمهمة الخلفية استدعاء هذه الواجهات على التوالي دون فقدان القيمة المحددة بواسطة الاستدعاء السابق على الخاصية الأخرى.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات