Winform на CF немного тяжелый, инициализация множества дескрипторов окон требует серьезного времени и памяти. Другой проблемой является отсутствие встроенной двойной буферизации и отсутствие контроля над рендерингом пользовательского интерфейса, что означает, что во время операций, интенсивно использующих процессор, пользовательский интерфейс может оставлять пользователя пристальным взглядом на наполовину визуализированный экран. Отлично!
Чтобы решить эту проблему, я хотел бы найти легкую структуру управления, есть ли она уже в работе или придется заняться самодельной работой?
Под легкостью я имею в виду библиотеку элементов управления, которая позволяет полностью контролировать отрисовку элементов управления и не использует много дорогостоящих дескрипторов окон.
ПРИМЕЧАНИЕ. Не говорите, что я слишком много использую поток пользовательского интерфейса. Это случай нет.





Фактически, вы можете переопределить событие рисования.
Идея состоит в том, что вы переносите длительные операции в отдельный поток. На самом деле это не отличается от любой другой событийно-управляемой структуры. Что-либо, который полагается на обработку события Paint, будет восприимчив к этому.
Кроме того, нет системы, которая позволяет вам определять, когда возникает событие рисования. Такое событие обычно вызывается уровнем диспетчера окон, который находится за пределами приложения (или даже фреймворка). Вы можете обработать событие самостоятельно и просто иногда не работать, но я бы не рекомендовал это.
a bit slow and you can't control the paint event so during processor intensive operations the UI might leave the user staring at a half rendered screen.
Как правило, выполнять дорогостоящие задачи в потоке пользовательского интерфейса - плохая идея. Чтобы ваш пользовательский интерфейс оставался отзывчивым, эти задачи должны выполняться рабочий поток
Хорошо, просто идея из моей головы ...
Как насчет создания объекта синхронизации, например критическая секция или одиночная блокировка в вашем приложении, разделяемая между вашими рабочими и графическими потоками. Отменить краску. Когда вы начинаете рисовать, заблокируйте все другие потоки, чтобы у вас не остался наполовину нарисованный экран, пока они загружают процессор.
(это, конечно, предполагает, что самое важное, что вам нужно, - это представить красивую картинку пользователю;))
На днях я наткнулся на это, что может быть полезно, по крайней мере, в качестве отправной точки: Fuild - Сенсорное управление Windows Mobile .NET. Внешний вид приятный, но нет поддержки времени разработки. Я не слишком много знаю об объеме памяти и т. д., Но все имеет двойную буферизацию, и производительность кажется довольно хорошей.
немного поздно, чтобы закрыть это, а?