Мне интересно, возможно ли 1) Размещение фонового потока, созданного в форме окна, внутри основного потока приложения, созданного в форме окна? или 2) Отделить поток, который обрабатывает движения мыши, от потока, рисующего приложение формы Windows?
Я знаю, что эти вопросы звучат очень безумно, но я столкнулся со своеобразной проблемой, и я приветствую совет, как обойти эту проблему, хотя я не думаю, что мы можем легко отказаться от форм Windows и использовать различные технологии пользовательского интерфейса.
Наша команда разработчиков программного обеспечения пишет несколько плагинов для стороннего приложения формы Windows. Итак, мы предоставляем корневую основную форму, в которой размещается множество пользовательских элементов управления, используя их API, и они размещают их в своей собственной форме Windows. В настоящее время все пользовательские интерфейсы создаются в основном потоке приложения, поэтому они хорошо взаимодействуют друг с другом. Многие из наших пользовательских элементов управления, которые мы предоставляем, имеют диаграммы system.windows.forms.datavisualisation, которые рисуются в реальном времени данными, которые получает приложение. Одна из проблем, с которой мы сталкиваемся, заключается в том, что когда пользователь хаотично перемещает мышь, дисплей перестает обновляться, поскольку вся прорисовка графиков (GDI+) выполняется в основном потоке (мы используем фоновые потоки и TPL для поиска и вычисления данных, но рисование выполняется в основном потоке). Поэтому мне интересно, можно ли сделать так, чтобы вся рисование gdi+ этих диаграмм происходило в потоке, отличном от основного потока приложения, чтобы рисование продолжалось, и мы все еще могли получать входные данные движения мыши и щелчки для взаимодействия с пользователем, но неустойчивая мышь движения не могут заполнять очередь сообщений и останавливать отрисовку gdi+ пользовательских элементов управления.
Любая помощь, особенно указатели на соответствующие API или статьи, демонстрирующие методы, будут высоко оценены. Спасибо.