mpmichael
Goto Top

VB2010 close aus Form-Load heraus, vermeidung von System.ObjectDisposedException

wie kann man das besser lösen - oder eleganter

warum ich die Fehlermeldung bekomme ist mir klar - ich schreibe in eine TextBox innerhalb des Sub Load_Forms und löse auf Grund eines Ereignisses (IF) einen close() befehl aus.

Wie kann ich den
Load_Form1 
zuende laufen lassen und danach den Close auslösen?

Stausvariable und über
Shown 
gehen?

Bin wie immer für Tips sehr dankbar
Beste Grüße
mpmichael

Content-Key: 166988

Url: https://administrator.de/contentid/166988

Printed on: April 20, 2024 at 00:04 o'clock

Member: MrTrebron
MrTrebron May 26, 2011 at 15:08:02 (UTC)
Goto Top
Hi

verstehe ich nicht so ganz.

Du lässt in der Load_Form eine Textbox befüllen vom System, darauf machst du eine If Abfrage und je nach Ergebnis der If Abfrage dann ein Form Close.

Bin ich da jetzt richtig? Woher kommen die Daten die in die Textbox geschrieben werden?

Gruß
Norbert
Member: mathe172
mathe172 May 26, 2011 at 15:10:46 (UTC)
Goto Top
Hallo,

vielleicht wäre es hilfreich, wenn du die betreffenden Subs mal reinkopierst, damit man dir auch besser helfen kann.

Mfg,
Mathe172
P.S.:Du bekommst mehr Antworten, wenn deine Frage mit "Hallo" oder "Guten Tag" beginnt face-wink
Member: mpmichael
mpmichael May 26, 2011 at 19:25:27 (UTC)
Goto Top
Sorry ,

Es war so heiss das ich vergessen habe eine höfliche Anrede zu wählen. Sollte natürlich nicht sein.
Source stelle ich am Montag ein. Komme vermutlich vorher nicht ran.
Beste Grüße
Mpmichael
Member: mpmichael
mpmichael May 26, 2011 at 19:27:23 (UTC)
Goto Top
Hallo,

Ja Du liebte richtig. Die Texte werden wie eine Art Log durch das Programm automatisch erzeugt.
Beste Grüße
Mpmichael
Member: mpmichael
mpmichael May 27, 2011 at 09:23:10 (UTC)
Goto Top
Guten Morgen,

anbei die Sub's - habe sie auf die wesentlichen Zeilen Reduziert:

    Private Sub LogBoxing(ByVal logtext As String)

        '********************************************************************************************  
        '*** Log Schreibung  
        '*********************************************************************************************  

        Dim ADInfo
        ADInfo = CreateObject("wscript.network") 'Abfrage der Netzwerkinformationen  
        logtext = DateString & " " & TimeString & " : " & logtext & vbNewLine  
        LogBox1.AppendText(logtext)


    End Sub

Hier der Code aus Form1_Load
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim MeldungsText As String      'Meldungstext falls Programme offen sind  
        MeldungsText = "NIX"  

        Call LogBoxing("Programmstart")  

        ' Abfrage Status IpAgent  

        If IsProcessOpen("IpAgent") = True Then  
            Call LogBoxing("IPAGENT läuft bereits!")  
            MeldungsText = "Achtung: Das AVAYA IP Agent (Softphone) ist bereits gestartet. Dieser muss erst geschlossen werden bevor dieses Programm ausgeführt werden kann! TelefonSwitcher wird nun beendet!"  
        Else
            Call LogBoxing("IpAgent ist nicht gestartet (OK!)")  
        End If

         If MeldungsText <> "NIX" Then  
            MsgBox(MeldungsText, MsgBoxStyle.Critical)
        End If

' hier feht Code, der nicht relevant ist  

        If MeldungsText <> "NIX" Then Close()  

    End Sub

Ich hoffe das hilft weiter
Beste Grüße und Danke
mpmichael
Member: MrTrebron
MrTrebron May 27, 2011 at 09:45:22 (UTC)
Goto Top
Hi mpmichael

leider kann ich den Fehler nicht reproduzieren.

Ich gehe aber mal stark davon aus das dass letzte If noch mit einem End If abgeschlossen wird.

Da die aktuelle Form geschlossen werden soll wäre Me.Close() schöner, aber egal.

Proniere doch mal

Application.Exit()

Gruß
Norbert
Member: mpmichael
mpmichael May 27, 2011 at 09:50:15 (UTC)
Goto Top
Hallo,

ich denke der Fehler rührt daher, das ich wärend des ladevorgangs bereits logge. Das geht auch ok, wenn nicht die Bedingungen eintreten, die in der Zeile 24 den Close auslösen - denn dann wird das Form geschlossen bevor die Meldung angezeigt wird.

Aber danke ich sehe mir mal
Application.Exit()
 

an.
Beste Grüße
mpmichael
Member: mathe172
mathe172 May 28, 2011 at 10:34:46 (UTC)
Goto Top
Hallo,

wenn ich das richtig verstehe, versucht er nach dem Close-Befehl noch weitere Befehle auszuführen, die aber fehlschlagen.

Wenn Application.Exit nicht hilft (und wenn's hilft, mach bitte einen grünen Hacken dran), versuch doch mal nach dem Close noch ein "Exit Sub" einzubauen.

Mfg,
Mathe172
Member: mpmichael
mpmichael May 28, 2011 at 16:39:20 (UTC)
Goto Top
Danke ich werde es am Montag gleich testen.
Member: mpmichael
mpmichael May 30, 2011 at 10:40:48 (UTC)
Goto Top
Hallo Norbert,

besten Dank Application.Exit() ist super und der Fehler tritt nun nicht mehr auf.
Beste Grüße
mpmichael