簡體   English   中英

事件處理程序之間的區別<t>和進步<t> ?</t></t>

[英]Difference between EventHandler<T> and Progress<T>?

我想知道使用EventHandler<T>Progress<T>之間的區別。 在任何情況下,哪個是更好的選擇?

在處理async Tasks時,我經常看到人們使用EventHandler<T> progressChangedCallback訂閱 object 的ProgressChanged事件並將進度更改報告到 UI 上的進度條等。 我還看到人們將IProgress<T>實例作為參數傳遞給Tasks 區別在於它們不調用事件,而是調用IProgress<T>.Report()方法。

它們是不同的機制。 在 class 上定義了一個事件,並將IProgress<T>傳遞給異步操作本身。 當一次只發生 1 個異步操作時,事件可能更有意義,並且每個此類操作的進度都需要以相同的方式顯示,因為 UI 需要訂閱一次單個事件,並且所有進度更新來自它的處理方式相同。 當您可以同時對 go 執行多個異步操作時, IProgress<T>可能更有意義,因為它可以讓您了解哪個操作正在報告哪個進度。

請注意, Progress<T>可以很好地將進度更新分派回 UI 線程(如果以正確的方式使用),但事件不會這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM