Если я не ошибаюсь, вы пытаетесь рисовать на двух разных мониторах одновременно, используя два разных приложения (или, лучше сказать, два разных объекта GraphicsDevice).
Давайте сначала посмотрим правильно.
Физически у вас есть видеокарта и монитор. Конечно, большинство видео взаимодействующих платформ, таких как DirectX, OpenGL, XNA и т. Д., Работают в основном на видеокарте и вместе с ней, а не с процессором, верно?
Теперь в концепции, основанной на программировании, у нас есть класс GraphicsDevice и класс GraphicsAdapter. Звонит в колокол, верно?
Хотя нет точной корреляции между GraphicsDevice и Videocart, а также GraphicsAdapter и монитором, между этими объектами существует очень тесная связь.
GraphicsDevice на самом деле не представляет видеокарту (хотя Джефф очень просто объяснил это). Объект GraphicsDevice является ИНТЕРАКТОРОМ с видеокартой. Аналогично, мы могли бы подумать, что объект GraphicsDevice является инструктором рисования, который указывает живописцу (видеокарте), где и что рисовать. Он предназначен для команды о том, как выполнить эти задачи.
У GraphicsAdapter есть отношение немного ближе к монитору, поэтому мы будем рассматривать его как основу в нашей аналогии.
Теперь посмотрим. Представьте, что у нашего художника столько же рук, сколько у GraphicsAdapters, поддерживаемых видеокартой. Это означает, что он может рисовать столько же холста одновременно.
Программно мы можем создать столько графических устройств, сколько мы хотим, как для художника, так и для его полотен. Каждый инструктор может попросить художника нарисовать другую вещь на другом холсте. Но разве художник не растерялся бы, если бы два инструктора сказали ему рисовать разные вещи на одном полотне?
Конечно, будет. Художник может выполнять только инструкции по рисованию на холсте одновременно (конечно, очень поверхностно, но достаточно, чтобы понять концепцию). Вот почему вы не можете создать экземпляр и получить доступ к двум графическим устройствам на одном адаптере. Всякий раз, когда адаптер меняет свое графическое устройство (инструктор), другой инструктор «теряется». Это означает, что ему не уделяется внимание некоторое время, пока другой инструктор не закончит, и все, что инструктор говорил живописцу (например, какую кисть использовать или какой цвет рисовать), будет забыто.
GraphicsDevice, следовательно, является "LostDevice". Поэтому, пока другое приложение рисует на адаптере, любое устройство (недавно созданное или нет) для этой видеокарты и адаптера будет потеряно, пока другое приложение не освободит реальное устройство (видеокарту).
Одновременно может работать только один GraphicsDevice на адаптере.
Как сказал Джефф, используйте другой адаптер (монитор) при создании другого GraphicsDevice. Другой вариант - координировать действия обоих приложений, если вы хотите рисовать на одном мониторе. ДРУГАЯ опция - вы делаете все окнами, потому что когда все «окнами», операционная система владеет устройством, то есть это будет операционная система, отвечающая за объединение чертежей приложений. (Проблема не твоя)