Hallo zusammen,
ich möchte mit Async eine Abfrage so einrichten, das sich die entsprechende Form nicht aufhängt während der Befehl Abgearbeitet wird.
Dazu hab ich hier mal eine Fertige Form, die so auch läuft nur eben ohne Async und await.
( Ich verwende Net Framework 4.7.1 Ich denke jedoch das das hier nicht Relevant ist, alles davon läuft auch in 4.5 oder noch ältereren Versionen.
Ich hab mir vorgestellt das Button1_ Der Prozess P Async laufen soll, somit würde die Form an sich nicht stehen bleiben während P Läuft.. (P ist hier ein cmd mit welchen man z.b. irgendwas machen kann, pingen, ipconfig etc... manchmal dauert der Durchlauf eben länger und das stört die Form.. Sie ist Blockiert.. Falls jemand Interessiert ist kann mir da ja gerne Helfen..
Edit: Zum Nachbauen.. 1 Listbox(Listbox1), 1 Richtextbox(rtbresult) 2 Buttons 1 Textbox(tbCmd).
ich möchte mit Async eine Abfrage so einrichten, das sich die entsprechende Form nicht aufhängt während der Befehl Abgearbeitet wird.
Dazu hab ich hier mal eine Fertige Form, die so auch läuft nur eben ohne Async und await.
( Ich verwende Net Framework 4.7.1 Ich denke jedoch das das hier nicht Relevant ist, alles davon läuft auch in 4.5 oder noch ältereren Versionen.
Ich hab mir vorgestellt das Button1_ Der Prozess P Async laufen soll, somit würde die Form an sich nicht stehen bleiben während P Läuft.. (P ist hier ein cmd mit welchen man z.b. irgendwas machen kann, pingen, ipconfig etc... manchmal dauert der Durchlauf eben länger und das stört die Form.. Sie ist Blockiert.. Falls jemand Interessiert ist kann mir da ja gerne Helfen..
Edit: Zum Nachbauen.. 1 Listbox(Listbox1), 1 Richtextbox(rtbresult) 2 Buttons 1 Textbox(tbCmd).
VB.NET-Quellcode
- Option Strict On
- Public Class Console
- Private Sub Console_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- FormBorderStyle = FormBorderStyle.None
- End Sub
- Private Sub Console_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
- If (e.Button = Windows.Forms.MouseButtons.Left) Then
- Capture = False
- WndProc(Message.Create(Me.Handle, &HA1, CType(&H2, IntPtr), IntPtr.Zero))
- Else : End If
- End Sub
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Using P As New Process()
- Cursor = Cursors.WaitCursor
- With P.StartInfo
- .CreateNoWindow = True
- .FileName = "cmd"
- .RedirectStandardInput = True
- .RedirectStandardOutput = True
- .UseShellExecute = False
- End With
- P.Start()
- P.StandardInput.WriteLine(tbCmd.Text)
- P.StandardInput.WriteLine("exit")
- rtbresult.Text = P.StandardOutput.ReadToEnd()
- End Using
- tbCmd.Undo()
- Cursor = Cursors.Default
- End Sub
- Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
- rtbresult.Undo()
- Close()
- End Sub
- Private Sub ListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
- tbCmd.Text = CType(Me.ListBox1.SelectedItem, String)
- End Sub
- End Class