2010-12-13 106 views
1

我在c#中有一個多層應用程序,應該在數據庫上執行任務(如果第一次使用,我們可能會創建數據庫並填充一些數據)。當我最初設計應用程序時,我沒有考慮可能的進度條控制,更不用說任何類型的進度報告了。我如何修改應用程序的設計以便能夠將數據庫操作進度報告給UI層?有沒有可重用的解決方案,並且不會強制我修改我的所有功能,以便爲報告提供額外的輸入信息?設計多層應用程序使用進度條

+0

祝你好運。 (報告)進度很難 – SLaks 2010-12-13 03:31:02

回答

0

否。根據您的應用程序的大小,您有很多工作要做。

要使工作進度報告,需要執行工作的代碼,以便在工作單元完成時引發事件。該事件需要在UI層進行處理並更新進度指示器。

一個很好的開始就是使用BackgroundWorker進行研究(這裏有一個MSDN的例子 - http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx)。一旦熟悉BackgroundWorker,您應該能夠更好地決定需要對應用程序進行哪些更改。

0

您可以修改服務器代碼,以便它更新服務器端的進度信息(不更改功能簽名),然後使用單獨的方法分別查詢此信息。

這將允許您改進對進度的支持,而不會對您對服務器的現有調用產生任何影響,只需在UI上添加新的後臺線程以檢查更新的進度信息,而長時間運行的任務正在進行中。

編輯:我想同樣的方法將適用於發生在客戶端的任務。但是,靜態進度指示器類也可以在這裏使用。

1

正如Greg所說,未來還有很多工作要做。但是,解決問題的方法有很多,最適合您的方法取決於已經從客戶端傳遞到應用程序/數據庫層的上下文信息。例如,如果會話令牌或事務標識符在執行查詢/事務的正常過程中從客戶端傳遞到應用程序,或者從應用程序異步地傳回到客戶端的確認引用,那麼對於那些針對其的查詢/事務進度報告是必要的,您可以讓應用程序更新客戶端可以查詢的狀態表。這可以減少所需的重新工作量。基本上,您需要考慮已有的「中間件」,並查看是否有任何可用於跨層次交易的關聯。