![](/img/trans.png)
[英]Difference between wiring events using “new EventHandler<T>” and not using new EventHandler<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.