Programmabsturz wegen Virenscanner???
-
Dienstag, 11. September 2012 06:54
Hallo Gemeinde,
mein VB-Programm ist beim Debuggen schon zweimal abgestürzt. Beide Male lief dann im Hintergrund mein Virenscanner.
Könnte das der Grund für den Absturz sein?
Falls ja, was kann ich dagegen unternehmen? (Den Virenscanner abschalten wäre eine sub-optimale Lösung.)Danke für Eure Unterstützung.
Herzlichen Gruß - Walter
wafest42
Alle Antworten
-
Dienstag, 11. September 2012 07:11
Hallo Walter,
klar kann ein Virenscanner die Ursache für einen Absturz einer Anwendung sein. Aber ca. eine Zilliarde andere Sachen auch.
Um auch nur ansatzweise zu erahnen, wo das Problem liegen könnte, poste bitte die genaue und vollständige Fehlermeldung.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert mowastengr Mittwoch, 12. September 2012 07:48
-
Dienstag, 11. September 2012 15:59
Hallo Stefan,
danke für das Kommentar, aber leider gibt es beim Absturz - selbst im Debug Modus - keinerlei Fehlermeldung.
In der Anwendung läuft eine Uhr (10:34:12) mit, die auch die Sekunden anzeigt. Zu verschiedenen Sekunden werden normalerweise verschieden Events getriggert (Taskmanager). Diese Uhr bleibt einfach stehen, und es dauert dann einige Zeit den Running Modus zu stoppen, wenn der Stopp-button im Debug Modus geklickt wird.
Gruß - Walter
wafest42
-
Dienstag, 11. September 2012 16:49Hallo Walter,
ist in der Dialogbox Menu Debug - Exceptions bei Common Language Runtime Exceptions die Checkbox Thrown aktiviert? Dann müsste im Debug Modus bei einer Exception gestoppt werden und diese angezeigt werden. Falls es denn eine Exception überhaupt gibt. -
Dienstag, 11. September 2012 17:07
Hallo Walter,
nur weil ich versuche es zu verstehen: wie erkennst Du denn ein Programm Abstürzt? Wenn es nicht das erwartete Verhalten bringt, so bleibt ein Absturz etwas das man an einer Fehlermeldung erkennt.
Nun ich nehme mal an Du hast Timer Events im Hintergrund. Dann ist es normal wenn das Programm ein wenig zögerlich reagiert. Es werden ja mehrere Sachen gleichzeitig gefordert.
Grüße Alexander -
Mittwoch, 12. September 2012 07:47
Hallo Alexander
siehe bitte meine Antwort an Stefan - da habe ich das Fehlerverhalten erläutert.
Danke für Deine Interesse.
Gruß - Walter
wafest42
-
Mittwoch, 12. September 2012 15:55
Danke für den Tip, Markus.
ich habe es tatsächlich geschafft das "Thrown" zu aktivieren - und jetzt bekomme ich die Fehlermeldung: 'System.StackOverflowException' occurred in System.Drawing.dll
an der Stelle im Programm:
Try
Call Instance_XY_Curves.XYPlot.Refresh() <---------- Error here
Catch ex As Exception
MessageBox.Show(ex.Message, "XYPlot.Refresh()")
End TryDa ist noch der Hinweis auf eine Endlosschleife, die ich natürlich nicht wissentlich programmiert habe. Es muss etwas sein, was im Hintergrund ungewollt passiert. Kann das mit try ... zusammen hängen.
Danke für Deine Unterstützung
Herzlichen Gruß - Walter
wafest42
-
Mittwoch, 12. September 2012 16:00Moderator
Hallo,
Also mit Try kann das nicht zusammen hängen, es kommt ja eine Exception, die du nun auswerten musst. Der Fehler muss in Call Instance_XY_Curves... liegen. Setze mal mit F9 bei der Zeile einen BreakPoint und mach dann mal mitt F11 Zeile für Zeile weiter, und gucke, was genau sich wiederhohlt. Wenn Die Methode aus einer ThirdParty DLL kommt, so hast du vlt. ein Event abboniert, welches dann ebenfalls Refresh() aufrufen würde.
Koopakiller - http://koopakiller.ko.ohost.de/
-
Mittwoch, 12. September 2012 17:58
Hi Walter,
das Problem hattest du doch schon in mal:
Da der Fehler nur Auftritt wenn das Form Sichtbar ist.
Würde ich mal darauf Tippen das du Irgendwo ein Event abfängst was auf das Refresh reagiert und dann wieder das Refresh aufrufst.
MFGBjörn
-
Mittwoch, 12. September 2012 19:22Hallo Walter,
wenn die Exception aufgetreten ist und das Programm im Debug angehalten hat könnte Debug - Windows - Call Stack Aufschluss geben welche Prozeduren aufgerufen wurden.
Auch Debug - Break All im Falle wenn das Programm lange braucht kann zeigen wo die aktuelle Ausführung ist. Im Falle der Endlosschleife eben immer wieder ist.
Wie es scheint wurde die Exception nicht abgefangen und blieb unentdeckt. Zur Sicherheit hilft hier ein UnhandledExceptionHandler.
Dim currentDomain As AppDomain = AppDomain.CurrentDomain
AddHandler currentDomain.UnhandledException, AddressOf UnhandledExceptionHandler
Public Shared Sub UnhandledExceptionHandler(ByVal sender As Object,
ByVal args As UnhandledExceptionEventArgs)
Dim ex As Exception = DirectCast(args.ExceptionObject, Exception)
MsgBox(ex.Message, , "Unhandled Exception")
End Sub
-
Freitag, 14. September 2012 09:35
Hallo Markus,
ich habe jetzt in den Try
Catch thisExcep AsSystem.StackOverflowException
eingefügt. Und jetzt scheint die Application stabil zu laufen.
Danke für Deine Unterstützung.
Bis zum nächstenmal.
Gruß - Walter
wafest42
-
Freitag, 14. September 2012 09:38
Ja, Du hast Recht, Björn, der Fehler ist immer wieder aufgetreten.
Aber siehe bitte meine Antwort an Markus unten - ich glaube ich hab's geschafft.
Danke für Deine Unterstützung.
Bis zum nächstenmal.
Gruß - Walter
wafest42
-
Freitag, 14. September 2012 09:40
Danke für den Hinweise, Koopakiller.
Aber siehe bitte meine Antwort an Markus weiter unten.
herzliche Grüße - Walter
wafest42
-
Freitag, 14. September 2012 20:16
Hallo Walter,
du schriebst:
> ich habe jetzt in den Try
> Catch thisExcep AsSystem.StackOverflowException
> eingefügt. Und jetzt scheint die Application stabil zu laufen.
Besser wäre es die Ursache zu finden und zu beheben.
Siehe auch stackoverflowexception
- Bearbeitet Markus Schertler Freitag, 14. September 2012 20:19
-
Montag, 17. September 2012 17:20
Hallo Markus,
mit dem Finden der Ursache hast Du natürlich recht (aber bei Microsoft ist das manchmal sehr schwierig). Und mein Optimismus wurde nicht belohnt: der Fehler trat leider wieder auf.
Aber die Ursache scheint zu sein, dass meine Application eine (fremd)Routine zu schnell hintereinander gestartet hat - vor sie wirklich abgeschlossen hatte. (ein redraw von einem Plot am Bildschirm).
In der neuesten Version meiner Application wird dieses redraw höchstens jede Minute einmal durchgeführt - das klappt jetzt hoffentlich.
Danke für Deine Unterstützung
Herzlichen Gruß - Walter
wafest42

