Pergunta

Eu tenho um pedaço de software que tem funcionado muito bem em muitas máquinas, althoughon uma máquina não é um problema que parece ocorrer ocasionalmente, o MenuStrip e ToolStrip ambos aparecem como um fundo em branco com uma cruz vermelha sobre ela, como um controle personalizado que se você criou um objeto nulo. Isso não acontece enquanto eu estou depuração e eu não sei como fazer o problema ocorrer novamente, mas acontece. Fiquei me perguntando se alguém sabia o que poderia ser o problema?

seria a versão do framework .NET?

Graças

Foi útil?

Solução

Esta é uma ocorrência comum quando há um problema GDI + ( "The X vermelho da morte"). Você está fazendo qualquer desenho personalizado em OnPaint? Ou talvez haja um recurso gráfico ou um glifo que se corrompe ou sendo utilizado indevidamente.

Editar: Eu re-ler sua pergunta. Você parece ter isso apenas em uma das máquinas. Eu pesquisei em torno de um pouco para isso, e eu tropecei em cima esta discussão antiga . O posto na parte inferior sugere que pode haver um problema com a memória virtual desligado:

Conseguimos resolver isso - estávamos ver o problema em um dispositivo em execução XP incorporado. O desenvolvedor imagem XPe tinha desligado a memória virtual e como Assim que ligou o problema se afastou. Eu acredito que é apenas um sintoma do sistema ficar sem memória para exibir os gráficos (talvez especialmente se você usar um monte de buffer duplo)

Espero que ajude.

Outras dicas

soa como um sintoma de uma Fora exceção de memória para mim.

Editar: Que por vezes pode levar para um System.InvalidOperationException: BufferedGraphicsContext

Você está tentando atualizar os controles de GUI de um segmento diferente do thread GUI? Combine a operação de rosca cruzada com um manipulador de exceção que engoliu tudo e tivemos o comportamento que você descrever (em um controle de grade, não um bar MenuStrip) em um aplicativo que eu estava mantendo.

sons definitivamente como um problema de cross-fio.

Certifique-se de usar Invoke ao acessar controles e / ou eventos de disparo de um segmento que não é o principal segmento.

Ao ver isso acontecer em apenas um computador de mais de um 1000 que temos nossos prouducts. Em que um computador que eu estou vendo um programa NET 3.5 mostram ocasionalmente no X vermelho na sua grade de dados. E outro programa muito mais simples .NET 2.0 tem o X vermelho em sua MenuStrip. Eu só tenho o código fonte para o programa mais simples, mas posso dizer que não há nenhum código do usuário em tudo o que afeta esse componente. Nenhum material cruz-thread porque nada atualiza-lo. É conteúdos são definidos em tempo de desenvolvimento com um item adicionado a ele em carga programa. O fracasso Red X foi bem depois de carregamento do programa.

Eu estava muito surpreso ao ver o problema em dois quadros diferentes e em um programa que não tem ligações de dados. Estou muito ansiosamente esperando que o computador tem a sua memória virtual desligado.

Se não for isso, então qualquer orientação sobre partes do sistema que são compartilhados entre .NET 2.0 e .NET 3.5 seria apreciada.

Update: O usuário com o problema aposentado o computador e substituiu-o (o que resolveu o problema)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top