Ookii-dialogs-wpf: ProgressDialog harus mengimplementasikan Progress<t/>

Dibuat pada 25 Mar 2020  ·  4Komentar  ·  Sumber: ookii-dialogs/ookii-dialogs-wpf

itu bisa sangat berguna jika ProgressDialog akan mengimplementasikan antarmuka ini:

System.IProgress<int> untuk melaporkan persentase kemajuan
System.IProgress<Text> untuk melaporkan kemajuan tekstual

Jadi objek ProgressDialog dapat diteruskan sebagai objek biasa ke pekerjaan yang sedang berjalan, dan dilemparkan ke IProgress<int> dan IProgress<Text> untuk pelaporan kemajuan

enhancement help wanted

Semua 4 komentar

Terima kasih @vpenades , itu terdengar seperti ide yang bagus.

Beri tahu saya jika Anda ingin mencoba dan mengirim PR, jika tidak, saya akan segera melakukannya untuk rilis berikutnya.

PR siap...

@vpenades Ookii.Dialogs.Wpf sekarang mendukung .NET 5 serta .NET Core 3.1, jadi saya pikir saya akan melakukan ping jika Anda ingin mulai mendiskusikan kemungkinan peningkatan implementasi IProgress<T>

ps: Tidak merasa berkewajiban untuk menjawab. Ini hanya ping ramah mengingat minat Anda sebelumnya dalam hal ini.

Kasus penggunaan sebagian besar waktu akan menjadi tugas latar belakang yang diinisialisasi dengan nilai Objek yang dapat dilemparkan ke beberapa versi IProgress<T> sehingga mereka dapat melaporkan kembali kemajuan tugas latar belakang.

Saya pikir antarmuka tidak banyak digunakan karena tidak terlalu terkenal, tetapi karena IProgress<T> ada dari beberapa waktu, saya melakukan pencarian kecil untuk melihat bagaimana orang menggunakannya, dan saya menemukan:

```C#
kemajuan// kemajuan dilaporkan dalam nilai antara 0-1
kemajuan// kemajuan dilaporkan dalam nilai antara 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)

Selain itu, IProgress<INT> dan IProgress<STRING> dapat menyimpan konten dalam cache sehingga tidak saling eksklusif; kode saat ini sudah menyimpan kemajuan, tetapi harus melakukan hal yang sama dengan teks. Jadi tugas latar belakang dapat memanggil antarmuka ini secara berurutan tanpa kehilangan nilai yang ditetapkan oleh panggilan sebelumnya di properti lainnya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat