簡體   English   中英

應用程序變慢

[英]Application Slowing Down

用C#(Forms)編寫的應用程序在一段時間后(尤其是從睡眠模式醒來之后,但大約30分鍾后)會變慢。

該應用程序具有以下結構:

在此處輸入圖片說明

按下按鈕1或按鈕2時,主面板發生變化。 如果單擊按鈕2,則實際面板中將顯示一個子菜單以及一個子面板:

在此處輸入圖片說明

有趣的是,該應用僅需極長的時間即可在面板1和面板2之間進行切換(也就是說,如果按下了按鈕1或按鈕2)。 按下按鈕2並加載面板后,子面板之間的切換(如果按下了按鈕2a,2b和2c)很快。

正如Davin Tryon在對本文的回答中建議的那樣> 長時間運行的應用程序會降低 <我已經檢查了CPU,內存,磁盤和網絡。

在此處輸入圖片說明

但是這些價值在我看來並不高...

編輯03/23/13 6:11 pm: DasKrümelmoster要求提供按鈕/面板1和按鈕/面板2之間的切換代碼

activePanel.Hide();
activePanel = getPanelFromSelectedMenuElement(selectedMenuElement); // would return "panel2";

在子面板之間切換時,基本上可以做到這一點。

您可以看看使用Red Gate Antz探查器() http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/ )檢查內存等問題。您將有14天的時間評估期也一樣。

另外,也許看看針對該應用程序使用Windows性能計數器: http : //www.codeproject.com/Articles/8590/An-Introduction-To-Performance-Counters

那可能與C#,winforms或您的應用程序無關。 Windows可能會將您的應用程序的內存部分交換到磁盤上,因為其他應用程序需要它。 在長時間的延遲后訪問應用程序的某些部分時,交換的內存將從磁盤加載回去,這可能需要一些時間。

如果您在運行時按需創建控件:控件的創建速度很慢,而隱藏/顯示它們的速度卻足夠快。 您可以將等待時間轉移到應用程序的開始,因為它不太明顯,並在啟動時創建了所有內容。

請參見以下控件,以幫助設計頁面而不在運行時顯示頁面: https : //stackoverflow.com/a/6954785/1974021

您的問題可能沒有足夠的信息供人們回答。

有一些關鍵的事情:

  1. 在主面板上附加控件的方法是什么

  2. 您是否將子控件附加到主面板上了? 如何?

  3. 根據您所需要的信息很少

     activePanel.Hide(); activePanel = getPanelFromSelectedMenuElement(selectedMenuElement); 

    下次getPanelFromSelectedMenuElement返回以前隱藏的面板的相同實例嗎? 如果不是,您是否處置了未引用的面板?

  4. 控件管理的代碼級層次結構是什么?

您需要將此信息提供給可以幫助您的人。 或者,也許您只是通過查看設計來找出原因。

如果這些都不是問題,並且您所說的不是由CPU負載,內存使用,頁面交換,磁盤訪問和網絡流量引起的,那么, 您只有一件事沒有提到:圖形卡性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM