У меня проблема с быстрым рисованием чего-либо в .NET. Я не думаю, что какая-то конкретная вещь должна занимать много времени, но на каждой машине, на которой я ее пробовал, возникают серьезные проблемы. Это реализовано в vs2008 .NET с использованием C # (с некоторыми вещами в C ++, но не имеет отношения к чертежу).
У меня есть три экрана, и пользователь должен иметь возможность переключаться между ними без задержки. На первом экране находятся четыре кнопки, восемь пользовательских элементов управления, состоящих из двух кнопок и 6 меток каждая, текстовое поле и раскрывающийся список. Я не думаю, что это так много.
На втором экране у меня есть четыре метки, шесть кнопок и два элемента управления, которые имеют шесть кнопок, один контекст рисования opengl и около десяти меток каждая.
На третьем экране у меня есть один контекст opengl и 10 кнопок.
Переключение с любого экрана на любой экран занимает буквально около секунды. Например, если я переключаюсь со второго экрана на первый, все приложение отключается, показывая фоновый экран, а затем рисуется первый экран. Во многих случаях экран рисуется по частям, как если бы машина преднамеренно делала вручную тонкие и вкусные письма на фабрике в Швеции, а затем отправляла каждое из них по отдельности на мой экран. Я преувеличиваю и хочу прояснить это, потому что не думаю, что шведы так медленны, как эта перерисовка.
Первый и второй экран прорисовываются в памяти и сохраняются там только с помощью «.Hide ()» и «.Show ()», чтобы они появлялись и исчезали. Двойная буферизация не имеет значения. Третий экран каждый раз рисуется заново, и для его рисования требуется столько же времени, сколько для первого и второго.
Есть мысли? Что может происходить? Как я могу отследить это?
Спасибо!
Редактировать: я должен добавить, что любая обработка C ++ и тому подобное происходит в своем собственном потоке. Иногда MethodInvoke выводит результаты операции на экран, но эта проблема возникает без вызова каких-либо функций, просто путем нажатия кнопок для перехода с одного экрана на другой.