2011-06-14 31 views
0

我正在努力嘗試改進現有的winforms項目,我們在這裏工作。 我現在有點想法,所以我想我會在這裏泄漏一些細節,看看有什麼人可以建議。WinForms性能案例:動態表單創建+綁定

的形式是這樣的:

我們有一個定義哪些控制被創建,使用完全合格的命名空間的列表(從數據庫得到)。 控件(用戶控件,基本上)依次通過反射創建,並將事件添加到表單上的面板。 現在,每個控件都可以有更多的內容,最終在樹狀控制層次結構中。

每個控件都有自己的初始化,最後DataSet作爲一個數據源被賦予窗體(和所有控件),並且數據綁定被添加並在每個窗體上發生。

尤其是,在某些情況下,我們將特定的ROW綁定到控件,而不是DataTable/Set。 所以我們期待BindingManager的位置調用來確定確切的行等

擁有約30〜用戶控件,我們得到了約10秒的可愛表現,打開一個新的形式, 在DataSet中幾乎不含任何數據。綁定大約需要3-4秒。

在複雜的數據狀態下,我們正在談論30-40秒的開放時間,其中約束時間約爲一半,約爲0.15秒。

現在,這是非常簡單的,我敢打賭,我們有很多我們自己的代碼導致一些減速, ,我已經通過它來了解一些點。

但性能的主要問題似乎是約束力。

我很想聽聽關於如何深入挖掘並找到這類性能問題的一些建議,特別是一種排序數百個綁定正在進行的混亂的方法。

回答

1

是檢索所有設置從數據庫獲取一部分的時間?

反射 - >反射發射,性能,但編碼是皮塔。

如何對建築物過程分離成2: 第一僅僅是去構造中的所有項目,數據項目將未結合的/空

然後在下一輪是個數據結合部。

這樣做,假設數據綁定很慢,至少ppl可以看到屏幕上彈出的東西。 ,你可以給出理由/藉口說數據綁定總是很糟糕,或者你可以單獨研究這部分問題。

+0

不,DB時間花在其他地方。 你怎麼發射? 我試着在這裏加載「異步」,並採取每個控件並加載/綁定它,但這導致太多的Winforms的怪癖,由於ControlCollection如何工作和作出反應。 – 2011-06-15 08:43:01