2012-09-12 15 views
13

Ho scritto un piccolo System.Windows.Forms.UserControl, lo chiamano userControl1, che sembra funzionare nel modo in cui lo desidero.My UserControl si blocca Visual Studio ogni volta che lo aggiungo a un modulo

Da Designer di Visual Studio 2010, è possibile trascinare userControl1 dalla barra degli strumenti e rilasciarlo su un Windows Form che chiamerò testForm1. Posso cablare userControl1 e funziona come dovrebbe.

Tuttavia, lo scopo di userControl1 è quello di poterlo utilizzare in un altro UserControl, chiamiamolo userControl2.

Da Designer di Visual Studio 2010, se trascino userControl1 dalla barra degli strumenti e lo rilasciamo su userControl2, Visual Studio 2010 si arresta in modo anomalo senza alcun messaggio diverso da quello in fase di riavvio.

screenshot

Allo stesso tempo, un errore di applicazione viene registrato nel Visualizzatore eventi con ID evento 1000:

Faulting application name: devenv.exe, version: 10.0.40219.1, time stamp: 0x4d5f2a73 
Faulting module name: unknown, version: 0.0.0.0, time stamp: 0x00000000 
Exception code: 0xc00000fd 
Fault offset: 0x0965f816 
Faulting process id: 0x1580 
Faulting application start time: 0x01cd90f84338e443 
Faulting application path: C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe 
Faulting module path: unknown 
Report Id: 49ddcedf-fcf8-11e1-8016-00248103a942 

Come posso fare per cercare di eseguire il debug di questo errore? Devo guardare qualcosa in userControl1 o userControl2?

Alcune note:

  • 1) Mi può anche trascinare un userControl2 dalla barra degli strumenti sul testForm1, e funziona (cioè display) bene sia in Progettazione VS2010 e quando faccio funzionare l'applicazione di test.

  • 2) Sono andato con successo nella progettazione di userControl2 dove ho dichiarato e impostare tutti i valori per userControl1, ma userControl1 non verranno visualizzati sul testForm1 quando viene eseguito. Se si seleziona userControl1 dalla finestra delle proprietà di userControl2 in Designer VS2010, Visual Studio si arresta in modo anomalo.

  • 3) Sono felice di inserire il codice, se è utile. Preferiresti il ​​codice per userControl1 o userControl2? Anche se entrambi i controlli sono piccole, c'è ancora un sacco di codice (soprattutto perché questo errore è probabile che si verificano nella finestra di progettazione, in modo da avrei dovuto postare anche quello.

+4

Eseguire due istanze di Visual Studio, aprire questo progetto in entrambe le istanze e in uno di essi utilizzare *** Allega per elaborare ...*** opzione per la seconda istanza per il debug (* processo devenv.exe *). Dovresti quindi essere in grado di vedere qual è l'eccezione. –

+3

Parte del codice in UserControl viene eseguito anche in fase di progettazione. Quel codice ha un bug, innesca una StackOverflowException. Un errore piuttosto fatale, che porta anche VS verso il basso. Cerca i setter/getter della proprietà ricorsiva, commenta le cose se non riesci a trovarle. –

+0

Puoi pubblicare un esempio di codice? – bryanbcook

risposta

16

Sembra che questo abbia aiutato a risolvere il problema, quindi Lo sto postando come risposta

Per eseguire il debug del controllo quando utilizzato in Designer Visual Studio, eseguire due istanze di Visual stu dio e apri il tuo progetto in entrambi i casi. Quindi, in uno dei casi utilizzare Attach to process ... e collegarlo alla seconda istanza per eseguirne il debug (processo devenv.exe). In questo modo, dovresti essere in grado di vedere qual è l'eccezione.

+1

Si noti che Visual Studio potrebbe non essere devenv.exe; per me, eseguendo Visual Studio 2012 Express per Desktop, era WDExpress.exe, se ricordo correttamente. – ekolis

+1

grazie mi ha salvato oggi –

+0

Questo approccio è stato molto più facile di quanto mi aspettassi. Il mio problema si è rivelato essere un problema di versione con un riferimento a un controllo di terze parti chiamato dall'evento Load di un UserControl annidato. – Giles

2
Ci

probabile che qualcosa nel costruttore il tuo controllo che sta tentando di accedere a un altro qualcosa che non è disponibile o sta creando un'eccezione che non può essere catturata dall'IDE (StackOverflow, OutOfMemory, ecc.)

+1

Se Lukasz torna e pubblica il suo commento come risposta, lo contrassegnerò come la soluzione. Se non lo fa, sei libero di aggiornare il tuo post aggiungendo il suo commento e contrassegnerò il tuo come risposta. – jp2code

Problemi correlati