Мы реализовали функциональность нашего основного кода в C ++ Dll, а затем написали C # UI поверх. В большинстве случаев это работает нормально, но в тех областях, где мы хотим, чтобы пользовательский интерфейс сообщал о прогрессе функции в C ++, у нас возникают некоторые проблемы с производительностью.
Мы передаем указатель на функцию C # в Dll, чтобы использовать ее для обновления прогресса. Когда он вызывается, мы используем InvokeRequired и Invoke (), чтобы убедиться, что обратный вызов является поточно-ориентированным. Измеряется со стороны C ++, это может занять от 16 мс до 180 мс. Есть ли способ сократить время, которое это занимает?
Один из этих обратных вызовов передает местоположение линии, которая должна быть нарисована на экране. Этот рисунок в настоящее время очень медленный - я предполагаю, что вызванные функции стоят в очереди и требуют времени для рисования в C #. Я вижу два способа борьбы с этим:
1. Измените функцию обратного вызова, чтобы отправить список строк и разрешить очереди стоять в очереди в C ++, ожидая завершения предыдущего вызова в C #.
2. Добавление линий в очередь на C # (желательно без вызова Invoke), а затем отрисовка всех доступных линий одновременно.
Любые предложения о том, как это сделать, требуются ли оба варианта или альтернативные методы?
Спасибо за любую помощь.