system.windows.forms.dll verursacht scheinbar Fehler

MAN

Erfahrenes Mitglied
Hallo,

sitze hier gerade an einem schweren Fehler den ich einfach nicht wegbekomme.

Habe mehrere Formen und gehe die Formen wie einen Wizard durch ("Zurück", "Weiter").
Wenn ich jetzt ein paar mal auf weiter und wieder zurück klicke, dann kommt irgendwann (meistens nach dem 2. oder 3. Mal, manchmal auch erst nach dem 10. Mal) eine Fehlermeldung:

Eine nicht behandelte Ausnahme des Typs 'System.Runtime.InteropServices.SEHException' ist in system.windows.forms.dll aufgetreten.

Zusätzliche Informationen: Eine externe Komponente hat eine Ausnahme ausgelöst.


Gezeigt wird auf die letzte Zeile, die Klammer:

Code:
[STAThread]
static void Main()
{
	frmMain startingForm = new frmMain();
	startingForm.CreateControl();
	Application.Run( startingForm );
}  //   <= diese Zeile mit grün, nicht gelb wie ein normaler Fehler im Debugmodus!

Was kann ich dagegen tun?


mfG,
MAN
 
Hallo,

die grünen Compilermeldungen weisen darauf hin, dass du die entsprechende Ausnahme nicht behandelt hast. Eine Ausnahme behandeln kannst du in einem try/catch-Block, also z.B.:
Code:
static void Main()
{
     try
     {
          frmMain startingForm = new frmMain();
          startingForm.CreateControl();
          Application.Run( startingForm );
     }
     catch(Exception myException)
     {
          MessageBox.Show(myException.Message); //gibt die Ausnahmen aus
     }
     finally
     {
     //was hier drin steht wird immer ausgeführt, wie z.B. das Schließen einer connection
     }
}
Letzteres gibt die Fehlermeldungen aller nicht anderweitig behandelten Ausnahmen in einer Message-Box aus, das Programm sollte aber weiter laufen.
Siehe hierzu auch:http://www.galileocomputing.de/openbook/csharp/kap04.htm
Dies fängt die Ausnahmen ab und erspart dir eventuell ein Abschmieren deiner Anwendung. Ich hoffe mal das hilft dir weiter :)

EDIT: Wenn du das folgende verwendest, erhälst du detailiertere Angaben über die aufgetretene Ausnahme:
Code:
        MessageBox.Show(myException.StackTrace + " " + myException.Message);

Gruß, Niko
 
Zuletzt bearbeitet:
Danke für die Antwort, aber leider ist das nicht die Lösung des Problems :(

Einen "Try 'n Catch"-Block hatte ich auch schon drumrum gemacht, aber dann gibt er mir auch nur den Fehler aus, den ich ja sowieso schon kenne. Das Problem ist, dass ichnicht weiß wo der Fehler auftritt! Da es ja rein gar nichts mit diesem Application.Run zu tun hat, bzw. nur indirekt.


mfG,
MAN
 
Hallo.

Hast du das auch mal mit dem stacktrace probiert?
EDIT: Dann bekommst du gesagt, in welchen Zeilen das auftritt.

Gruß, Niko
 
Zuletzt bearbeitet:
Ja, eben genau nach dieser einen Zeile (Application.Run(...) ) bei der Klammer:

at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.ComponentManager.System.Windows.Forms.UnsafeNativeMethods+IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at SOXI_TE.MainClass.Main() in d:\projekte\soxi\testkonzept\implementierung\testdatengenerator\src\main.cs:line 18

Eine externe Komponente hat eine Ausnahme ausgelöst.


Was nun?


mfG,
MAN
 
Hallo.

Leider gehen mir langsam die Ideen aus...
Das mit dem extern macht mich etwas stutzig. Du benutzt doch nur mehrere Forms, oder?
Oder hast du noch andere, wirklich externe Elemente mit eingebunden?

Gruß, Niko
 
@psychtron: Danke für den Link, aber den hatte ich mir auch schon durchgelesen, und da geht es um XP Visual Styles, die ich nicht verwende :(

@Azmodan: Ich benutze wirklich nur die stinknormalen Windows.Forms, und natürlich noch andere Komponenten wie System.Xml und Collection und so, aber das sind ja nicht wikrlich extern eingebundene Komponenten, oder?

Jedenfalls stimmt was mit den Windows.Forms nicht, das steht fest.

Wenn ich mein Programm debugge, bei jedem Klick auf Zurück und Weiter durch steppe, kommt dieser Fehler nicht - und kann ihn somit auch nicht lokalisieren! :confused:

Alternative wäre: ich lasse den User das Programm im Debugmodus ausführen, dann funktionierts ;)

Aber im Ernst: das Problem ist wirklich verzwickt, sitze schon 2 ganze Tage lang in der Arbeit dran, um komme einfach nicht weiter. Hoffe, ihr habt noch ein paar Ideen!

Vielen Dank!


mfG,
MAN
 
Hallo.

Ich habe nur noch einen letzten Ratschlag:
Schildere dieses Problem einem der netten Microsoft-Mitarbeiter per E-Mail. Da das nach einem eher ungewöhnlichen Fehler aussieht (eventuell ein Compiler-interner Fehler), können die dir eher weiterhelfen.
Schick am besten die Fehlermeldung mit und eventuell auf anfrage auch den quell-code, sofern das vereinbar ist von wegen Firmengeheimnis und so.
Sorry, aber als Programmier-Anfänger bin ich damit jetzt doch etwas überfragt. :)
Ich hatte bisher nur Fehler, die immer auftreten, auch im Debugger...

Gruß, Niko
 
Mir ist das auch noch nicht passiert, dass ein Fehler nur beim normalen Betrieb des Programms auftritt, jedoch im Debugmodus (also beim debuggen) nicht auftritt...

Die Mail an Microsoft hätte ich auch schon im Hinterkopf gehabt, aber wie kommt denn dass, das ich einen Microsoft Spezialisten heranziehe, der mir einen kleinen Fehler (aus Sicht des Microsoftlers) finden soll ;)

Naja, aber wenns keine andere Möglichkeit gibt, warum dann nicht Fachliche und Kompetente Hilfe (muahahaha *gg*) von Microsoft anfordern.


mfG,
MAN
 

Neue Beiträge

Zurück