2013-03-23 2 views
1

Приложение, написанное на C# (Forms), замедляется через некоторое время (особенно после пробуждения из спящего режима, но также через 30 минут).Приложение Slowing Down

Приложение имеет следующую структуру:

enter image description here

Основные изменения панели в качестве кнопки 1 или 2 кнопки нажаты. Если кнопка 2 нажата, то подменю, а также подпанель показан в реальной панели:

enter image description here

Интересно, что приложение нужно только очень долго, чтобы переключаться между Panel 1 и панели 2 (то есть, если Нажимается кнопка 1 или кнопка 2). Когда кнопка 2 нажата и панель загружена, переключение между субпанелями (если нажаты кнопки 2a, 2b и 2c) выполняется быстро.

Как сказал Дэвин Трион в своем ответе на этот пост>Long running application slows down < Я проверил CPU, память, диск и сеть.

enter image description here

Но эти ценности не кажется высоким мне ...

Редактировать 03/23/13 6:11 вечер: DasKrümelmoster попросил код переключения между Баттоном/Панель 1 и кнопка/панель 2:

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

То же самое происходит при переключении между суб-панелями.

+0

Не могли бы вы предоставить некоторый «код переключения» в Button 2? –

+0

См. В OP (редактировать 1) – libjup

+0

+1 Действительно есть. Я удалил все таймеры из своего приложения, и теперь он работает плавно. Как я могу освободить все неуправляемые ресурсы? Я попытался уничтожить все свои объекты, но это не решило проблему ... – libjup

ответ

0

Вы можете посмотреть, используя профилировщик 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

0

Это может быть не связана с C#, WinForms или приложения. Windows может частично заменить память вашего приложения на диск, потому что это было необходимо для других приложений. Когда вы получаете доступ к частям приложения после долгой задержки, обменная память будет загружена с диска, и это может занять некоторое время.

+0

Как я мог это предотвратить? Кроме того, я думаю, что он должен что-то сделать с моим приложением, так как никаких других приложений не работает (достаточно «свободного» процессора и памяти). Он просто замедляется примерно через 30 минут ... – libjup

0

Если вы создаете элементы управления по требованию во время выполнения: создание элементов управления выполняется медленно, а скрытие/показ их достаточно быстр. Вы можете перенести время ожидания на начало приложения, так как оно менее заметно и создать все при запуске.

Посмотрите этот контроль, чтобы помочь разработке страниц без показа страниц во время выполнения: https://stackoverflow.com/a/6954785/1974021

+0

Я создаю их один раз, когда приложение запускается. Это довольно быстро. Но через некоторое время приложение становится медленнее и медленнее, но никаких новых элементов управления не создается. – libjup

0

Ваш вопрос не может содержать достаточно информации для людей, чтобы ответить.

Там некоторые важные вещи:

  1. Что подход, который вы добавляете элементы управления на главной панели

  2. ли вы располагаете дочерними элементами управления, добавляемые к главной панели? И как?

  3. Согласно очень меньше информации о вас код

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

    Будет ли в следующий раз getPanelFromSelectedMenuElement возвращение тот же экземпляр ранее скрытой панели? Если нет, удалили ли вы панель без ссылок?

  4. Какова иерархия уровней управления элементами управления?

Вам необходимо предоставить эту информацию людям, которые могут получить полезный ответ. Или, может быть, вы просто найдете причину, просмотрев дизайн.

Если все это не проблема, и, как вы упомянули, это не будет вызвано загрузкой ЦП, использованием памяти, обменом страницей, доступом к диску и сетевым потоком; есть только одна вещь, о которой вы не говорили: производительность графической карты.

Смежные вопросы