Domanda

Ho un software che ha funzionato bene su molte macchine, anche se su una macchina c'è un problema che sembra verificarsi occasionalmente, sia MenuStrip che ToolStrip appaiono entrambi come uno sfondo bianco vuoto con una croce rossa su di esso, come un controllo personalizzato sarebbe se si creava un oggetto null. Questo non accade mentre eseguo il debug e non so come far ricomparire il problema, ma succede. Mi chiedevo se qualcuno sapesse quale potrebbe essere il problema?

Sarebbe la versione di .NET framework?

Grazie

È stato utile?

Soluzione

Questo è un evento comune quando c'è un problema GDI + (" The Red X of Death "). Stai eseguendo un disegno personalizzato in OnPaint ? O forse c'è una risorsa grafica o un glifo che è corrotto o che viene smaltito in modo improprio.

Modifica: ho riletto la tua domanda. Sembra che tu abbia questo solo su una delle macchine. Ho cercato su Google un po 'per questo, e sono incappato in questa vecchia discussione . Il post in basso suggerisce che potrebbe esserci un problema con la memoria virtuale disattivata:

  

Siamo riusciti a risolverlo - lo eravamo   vedere il problema su un dispositivo in esecuzione   XP incorporato. Lo sviluppatore di immagini XPe   aveva spento la memoria virtuale e come   non appena abbiamo risolto il problema   andato via. Credo che sia solo un   sintomo del sistema in esaurimento   memoria per visualizzare la grafica (forse   soprattutto se ne usi molto   doppio buffering)

Spero che sia d'aiuto.

Altri suggerimenti

Sembra un sintomo di una Eccezione memoria insufficiente per me.

Modifica Che a volte può portare a un System.InvalidOperationException: BufferedGraphicsContext

Stai provando ad aggiornare i controlli della GUI da un thread diverso dal thread della GUI? Combina l'operazione cross thread con un gestore di eccezioni che ha ingoiato tutto e abbiamo avuto il comportamento che descrivi (su un controllo della griglia, non una barra dei menu) su un'app che stavo mantenendo.

Sembra decisamente un problema di cross-thread.

Assicurati di utilizzare Invoke quando accedi ai controlli e / o attiva eventi da un thread che non è il thread dell'interfaccia utente principale.

Vedendo che ciò accade su un solo computer di oltre 1000 che ha i nostri orgogliosi. Su quell'unico computer vedo un programma .NET 3.5 che mostra occasionalmente la X rossa sul suo datagrid. E un altro programma .NET 2.0 molto più semplice ha ottenuto la X rossa sul suo menuStrip. Ho solo il codice sorgente per il programma più semplice ma posso dire che non esiste alcun codice utente che influisce su quel componente. Nessuna roba cross-thread perché nulla la aggiorna. I suoi contenuti sono impostati al momento dello sviluppo con un elemento aggiunto al caricamento del programma. L'errore Red X è stato ben dopo il caricamento del programma.

Sono stato molto sorpreso di vedere il problema in due diversi framework e su un programma che non ha associazioni di dati. Spero vivamente che il computer abbia la memoria virtuale spenta.

In caso contrario, si apprezzerebbero tutte le indicazioni sulle parti di sistema condivise tra .NET 2.0 e .NET 3.5.

Aggiornamento: l'utente con il problema ha ritirato il computer e lo ha sostituito (che ha risolto il problema)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top