Вопрос

У меня есть часть программного обеспечения, которая отлично работала на многих машинах, хотя на одной машине есть проблема, которая, по-видимому, возникает время от времени: MenuStrip и ToolStrip отображаются в виде пустого белого фона с красным крестом над ним, как пользовательский элемент управления, если бы вы создали нулевой объект.Этого не происходит, пока я отлаживаю, и я не знаю, как заставить проблему возникнуть повторно, но это происходит.Мне было интересно, знает ли кто-нибудь, в чем может быть проблема?

Будет ли это версия .NET framework?

Спасибо

Это было полезно?

Решение

Это обычное явление, когда возникает проблема с GDI + ("Красный Крест смерти").Делаете ли вы какой-либо пользовательский рисунок в OnPaint?Или, возможно, есть графический ресурс или глиф, который поврежден или неправильно утилизируется.

Редактировать: Я перечитал ваш вопрос.Похоже, у вас это есть только на одной из машин.Я немного погуглил для этого, и я наткнулся на эта старая нить.Сообщение внизу предполагает, что, возможно, возникла проблема с отключенной виртуальной памятью:

Нам удалось решить это - мы были видим проблему на устройстве под управлением XP embedded.Разработчик XPe image отключил виртуальную память, и как только мы включили ее, проблема исчезла.Я считаю, что это просто признак того, что системе не хватает памяти для отображения графики (возможно особенно, если вы используете много двойной буферизации)

Надеюсь, это поможет.

Другие советы

Звучит как симптом Исключение нехватки памяти для меня.

Редактировать: Что иногда может привести к System.InvalidOperationException: BufferedGraphicsContext

Вы пытаетесь обновить элементы управления GUI из потока, отличного от потока GUI?Объедините операцию перекрестного потока с обработчиком исключений, который проглотил все, и мы получили описанное вами поведение (для элемента управления grid, а не для панели menustrip) в приложении, которое я поддерживал.

Определенно звучит как проблема с перекрестным потоком.

Убедитесь, что вы используете Invoke при доступе к элементам управления и / или запуске событий из потока, который не является основным потоком пользовательского интерфейса.

Наблюдая, как это происходит всего на одном компьютере из более чем 1000, на которых установлены наши prouducts.На этом компьютере я вижу, что программа .NET 3.5 время от времени показывает красный крестик в своей сетке данных.И другая гораздо более простая программа .NET 2.0 получила красный крестик в своей MenuStrip.У меня есть только исходный код для более простой программы, но я могу сказать, что вообще нет никакого пользовательского кода, который влиял бы на этот компонент.Никаких перекрестных потоков, потому что их ничто не обновляет.Его содержимое задается во время разработки, а один элемент добавляется к нему при загрузке программы.Сбой Red X произошел задолго до загрузки программы.

Я был очень удивлен, увидев проблему в двух разных фреймворках и в одной программе, которая не имеет привязок к данным.Я очень надеюсь, что виртуальная память компьютера отключена.

Если это не так, то были бы признательны за любые рекомендации по системным частям, которые являются общими для .NET 2.0 и .NET 3.5.

Обновить:Пользователь с проблемой отключил компьютер и заменил его (что решило проблему)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top