2015-10-06 47 views
0

我有非常通用的問題。我試過谷歌,但找不到任何好的。如何在winform中加載子窗口時保持UI解鎖

所以問題是:我有winform應用程序,其中基於從菜單欄中選擇的選項,加載子窗體/視圖,這些子窗體用於顯示報表。

爲了生成報表,這些子表單包含日期,名稱等報表選擇標準,這些值來自DB。基於數據庫中可用的值,我們在視圖中添加控件。

當屏幕花費大量時間加載時,問題就出現了,它會在加載期間凍結UI /應用程序,我不想要。

我也試過運行任務異步,但因爲它在處理過程中使用視圖,所以此選項失敗。

ThreadPool.QueueUserWorkItem(delegate { method.Invoke(presenter, results); }); 

演示者是我的viewpresenter,結果是調用它的參數。應用程序在運行時結束演示者名稱並使用methodinfo.invoke()調用其默認方法。

是否有任何其他方式來實現相同。

要點:我無法重新設計整個應用程序以從UI邏輯中分離出完整的數據庫邏輯,因爲它是傳統應用程序,這可能會破壞應用程序。

+0

......以及「你試過的是什麼」? – niksofteng

+0

從您提供給我們的有限信息幾乎可以做的不僅僅是建議從UI邏輯中分離數據庫邏輯,但您已經說過我們不能這樣做。所以,除非你能給我們更多的細節,否則我認爲你被卡住了。 – Enigmativity

+0

您需要顯示與問題相關的所有代碼。你還沒有給我們任何東西繼續。 – Enigmativity

回答

0

如果「凍結」的問題,你可以使用的DoEvents,在這裏看到:Use of Application.DoEvents()

或者,你可以去真的老土,VB6方式:運行同步凍結您的UI代碼,但是從顯示的模式窗口以上你的用戶界面。您可以通過事件向用戶顯示進度指示器。

相關問題