類中有幾個方法執行一些冗長的操作,並應定期向調用者報告進度,例如,顯示錶示層中,登錄文件等從該方法提供進度信息的首選方法?
我用下面,在過去的解決方案,但我很擔心,如果這是首選的方式做到這一點:我已經回調委託定義
這樣的:
public delegate bool ProgressCallback(double percentCompleted, object arg);
然後,我的「工人」的方法是這樣的:
public bool DoSomething(bool firstArg, int anotherArg, ProgressCallback progressCallback, object callbackArg);
我調用progressCallback
一個漫長的過程的每次迭代之後,如果返回假,這意味着操作應該中止。
請注意,該進程必須是同步的,不需要異步實現。
我只是在我的代碼中反覆重複這種技術,所以我擔心這是否是推薦的模式。這是你如何實現這樣的事情?我應該使用事件嗎,還是這樣簡單的實現對你來說看起來不錯?
-1:「請注意,進程必須是同步的,不需要異步實現。」 – tomfanning
啊錯過了,謝謝!但是(我明白,如果他想要的話,這是足夠的理由不這樣做),我會建議做異步。看起來更乾淨,你可以更準確地報告進展,並以更好的方式恕我直言。 –
好吧,無論如何,我使用BackgroundWorker,但是它在「上層」中實現,其中封裝了異步功能。這個班級本身並不關心這一點。 –