ERLEDIGT
JA
JA
ANTWORTEN
22
22
ZUGRIFFE
2082
2082
EMPFEHLEN
-
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 von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
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?
-
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 von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
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.... =(
-
ja, und zwar hier!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
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 von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
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
-
09.07.09 12:47 #22
- Registriert seit
- Oct 2007
- Beiträge
- 325
Dafür hat dir Nico schon in Post Nummer 14 die Antwort genannt.
-
Danke, jetzt hab ich es endlich hinbekommen. Vielen dank
Ähnliche Themen
-
Process.Start geht auf Server2003 nicht
Von Horscht1 im Forum .NET Windows FormsAntworten: 1Letzter Beitrag: 27.01.10, 22:54 -
Process.Start Variable definieren
Von mäcjava im Forum Visual Basic 6.0Antworten: 9Letzter Beitrag: 17.09.09, 12:00 -
[vb.net] Process.Start()-Problem mit Leerzeichen
Von Andreas Dunstheimer im Forum .NET CaféAntworten: 6Letzter Beitrag: 26.08.07, 12:55 -
[VC++.NET] Mit Process::Start() auch steuern
Von the incredible Leitman im Forum .NET Web und KommunikationAntworten: 1Letzter Beitrag: 28.03.07, 15:09 -
Process = Thread?
Von kahuna im Forum .NET ArchivAntworten: 1Letzter Beitrag: 11.08.04, 19:21






Zitieren
Login





