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