4

Вопрос по menustrip, toolstrip, multithreading, c# – Проблема «Красного Креста» на MenuStrip и ToolStrip

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

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

Спасибо

  • Извините, я неправильно прочитал ваш вопрос в первый раз.

    от
  • Спасибо за обновление и информацию

    от ThePower
  • Нет, я не делаю никаких пользовательских чертежей, просто использую их в качестве стандарта, я понимаю, что вы имеете в виду, поскольку наткнулся на это, когда я создавал пользовательские элементы управления в прошлом. В любом случае, спасибо за вашу помощь!

    от ThePower
5 ответов
  • 2

    Звучит как симптом

    Исключение из нехватки памяти мне.

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

  • 1

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

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

  • 3

    Это обычное явление

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

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

    We did manage to solve this - we were seeing the problem on a device running XP embedded. The XPe image developer had turned off Virtual Memory and as soon as we turned it on the problem went away. I believe it is just a symptom of the system running out of memory to display the graphics (maybe particularly if you use a lot of double buffering)

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

  • 1

    Наблюдение за этим происходит только на одном компьютере из более чем

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

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

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

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

  • 1

    Вы пытаетесь обновить элементы управления GUI из потока

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