Я пытаюсь создать многопоточную программу, в которой весь рендеринг выполняется в первичном потоке, а обработка сообщений (и создание окон) — во вторичном потоке. Следующая строка кода SwapChain->GetBuffer(0, __uuidof(ID3D10Texture2D), (void**)&back_buffer);
в функции инициализации выдает ошибку нарушения доступа (0xc0000005), когда функция инициализации размещается в основном потоке.
Как я могу исправить эту ошибку, не помещая функцию инициализации во вторичный поток?
РЕДАКТИРОВАТЬ: я разместил весь соответствующий код Вот.
В строке 49 файла Application.cpp while (HWindow != nullptr);
ждал HWindow
в становиться nullptr
, Но HWindow инициализируется как nullptr
и поэтому цикл while пропустил бы и попытался инициализировать окно, которое еще не было создано.
Эта строка теперь читает while (HWindow == nullptr);
, Это означает, что цикл выполняется до тех пор, пока окно не будет создано, тем самым блокируя инициализацию окна, которое не существует.
Других решений пока нет …