tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
JA
ANTWORTEN
22
ZUGRIFFE
2082
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Hi

    Also:
    Wenn das Programm nur am Ende irgendwas ausgibt, kannst du das Exited Event nutzen. Dies wird im gleichen Thread wie der Aufruf.
    Die Asynchonen Methoden laufen in einem anderen Thread, da sonst kein Aufruf stattfinden kann. Wenn dein Programm permanent Ausgaben macht (über einen längere Zeit), solltest du diesen Weg gehen und dich mit dem Thema Threading auseinander setzen. Von: "ich komm damit nicht klar" wirds jedenfalls nix
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  2. #17
    Thau Thau ist offline Mitglied Bronze
    Registriert seit
    Mar 2007
    Beiträge
    32
    Wie genau funktioniert dieses Exited Event? Kannst du mir einen kleines Stück Code geben in dem einfach die Ausgabe nach Beendigung in eine Textbox geschrieben wird?
     

  3. #18
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Hi TextBox nicht. Aber für die Konsole:
    http://msdn.microsoft.com/en-us/libr...ss.exited.aspx

    Schau dir in der MSDN oder auf anderen Seiten die Dokumentation zu den Dingen an, die du nutzt bzw. die dir empfohlen werden, da findest du meist auch Beispiele.
    Da soltlest du die Beispiele erst ausprobieren und verstehen, dann erst auf deinen Code adaptieren.
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  4. #19
    Thau Thau ist offline Mitglied Bronze
    Registriert seit
    Mar 2007
    Beiträge
    32
    Also ich hab das mit hilfe des Beispiels jetzt so gemacht:
    Code vbnet:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    
        Private WithEvents Run As New Process
        Private elapsedTime As Integer
        Private eventHandled As Boolean
     
     
        Private Sub RunApp(ByVal Befehl As String, ByVal Parameter As String)
            elapsedTime = 0
            eventHandled = False
     
     
            Run.StartInfo.FileName = Befehl
            Run.StartInfo.Arguments = Parameter
            Run.StartInfo.UseShellExecute = False
            Run.StartInfo.CreateNoWindow = True
            Run.StartInfo.RedirectStandardOutput = True
            Run.StartInfo.RedirectStandardError = True
            Run.EnableRaisingEvents = True
     
            Run.StartInfo.RedirectStandardInput = True
     
            Run.Start()
     
            'TextBox1.Text &= Run.StandardOutput.ReadToEnd() & vbCrLf
            'TextBox1.Text &= Run.StandardError.ReadToEnd() & vbCrLf
     
     
            'TextBox1.SelectionStart = Len(TextBox1.Text)
            'TextBox1.ScrollToCaret()
            'TextBox1.Focus()
            'Application.DoEvents()
            'Run.WaitForExit()
            Const SLEEP_AMOUNT As Integer = 100
            Do While Not eventHandled
                elapsedTime += SLEEP_AMOUNT
                'If elapsedTime > 3000 Then
                'Exit Do
                'End If
                System.Threading.Thread.Sleep(SLEEP_AMOUNT)
            Loop
            'TextBox1.Text = Run.StandardError.ReadToEnd()
        End Sub
     
        ' Handle Exited event and display process information.
        Private Sub Run_Exited(ByVal sender As Object, _
                ByVal e As System.EventArgs) Handles Run.Exited
     
            eventHandled = True
            MessageBox.Show("Finished" & vbCrLf & "Elapsed time: " & Run.ExitTime & " | " & Run.ExitCode & " | " & elapsedTime)
        End Sub

    Aber das programm friert trotzdem noch ein.... =(
     

  5. #20
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Code vbnet:
    1
    2
    3
    4
    5
    6
    7
    
    Do While Not eventHandled
                elapsedTime += SLEEP_AMOUNT
                'If elapsedTime > 3000 Then
                'Exit Do
                'End If
                System.Threading.Thread.Sleep(SLEEP_AMOUNT)
            Loop
    ja, und zwar hier!
    Was willst du damit bezwecken?
    Du bremst damit selbst dein Programm aus!
    Nochmal der Hinweis: Nutz auch den Debugger um sowas zu finden!
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  6. #21
    Thau Thau ist offline Mitglied Bronze
    Registriert seit
    Mar 2007
    Beiträge
    32
    Ok danke so gehts jetzt, aber jetzt fehlt nur noch das der ausgelesene Text in die Textbox kommt, wenn ich in dem Private Sub Run_Exited(ByVal sender As Object, ByVal e As System.EventArgs) Handles Run.Exited
    einfach TextBox1.Text = Run.StandardError.ReadToEnd() reinsetze kommt wieder der Fehler mit den Threads
     

  7. #22
    Masterclavat Masterclavat ist offline Mitglied Brokat
    Registriert seit
    Oct 2007
    Beiträge
    325
    Dafür hat dir Nico schon in Post Nummer 14 die Antwort genannt.
     

  8. #23
    Thau Thau ist offline Mitglied Bronze
    Registriert seit
    Mar 2007
    Beiträge
    32
    Danke, jetzt hab ich es endlich hinbekommen. Vielen dank
     

Ähnliche Themen

  1. Process.Start geht auf Server2003 nicht
    Von Horscht1 im Forum .NET Windows Forms
    Antworten: 1
    Letzter Beitrag: 27.01.10, 22:54
  2. Process.Start Variable definieren
    Von mäcjava im Forum Visual Basic 6.0
    Antworten: 9
    Letzter Beitrag: 17.09.09, 12:00
  3. [vb.net] Process.Start()-Problem mit Leerzeichen
    Von Andreas Dunstheimer im Forum .NET Café
    Antworten: 6
    Letzter Beitrag: 26.08.07, 12:55
  4. [VC++.NET] Mit Process::Start() auch steuern
    Von the incredible Leitman im Forum .NET Web und Kommunikation
    Antworten: 1
    Letzter Beitrag: 28.03.07, 15:09
  5. Process = Thread?
    Von kahuna im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 11.08.04, 19:21

Stichworte