У меня есть графическое приложение C ++ для документа / представления C ++, которое выполняет все свои рисунки в закадровом растровом изображении, а затем копирует их в предоставленный указатель CDC в методе OnDraw. В последние пару дней я пытался поместить компонент рисования в отдельный рабочий поток, чтобы он не останавливал работу графического интерфейса. Кажется, я получаю изрядное количество связанных с MFC GDI утверждений, когда я делаю это, например, g,
VERIFY(::MoveToEx(m_hAttribDC, x, y, &point)
Итак, несколько вопросов;
- Есть ли проблемы с использованием рабочих потоков с MFC & GDI?
- Есть ли проблемы с использованием объектов MFC GDI в потоках?
- Должны ли объекты GDI быть объявлены локально для потока?
Хотя возможно, что проблема связана с ресурсом / блокировкой, поток чертежа имеет свои собственные CDC и CBitmap для обеспечения, которые он использует для всего чертежа, и копирует растровое изображение обратно в основной поток, когда он имеет исключительный доступ через мьютекс. Код также был протестирован прямым вызовом, а не отдельным потоком, чтобы доказать, что проблема действительно связана с многопоточностью.