Hallo Zusammen,
ich habe mal eine Frage bezüglich des auslesen/setzen von GUI-Elementen aus einem anderen Thread. Ich habe es bereits hinbekommen, aus einem anderen Thread den Text eines Labels abzuändern, aber bei einem ToolStripStatusLabel streikt es. Mittels Google habe ich bereits herausgefunden, dass es hier keine InvokeRequired-Methode gibt, da es sich nicht um ein Control, sondern um ein Component handelt. Wie kann ich nun den Text im StatusStriplabel ändern aus meinem Thread?
Hier einmal mein ganzes Testprojekt um das Invoken zu verstehen, sowie das Erstellen von Threads.
Bezüglich auslesen einer Listview:
Wie kann ich diese in einen anderen Thread auslesen?
LG Marvin
ich habe mal eine Frage bezüglich des auslesen/setzen von GUI-Elementen aus einem anderen Thread. Ich habe es bereits hinbekommen, aus einem anderen Thread den Text eines Labels abzuändern, aber bei einem ToolStripStatusLabel streikt es. Mittels Google habe ich bereits herausgefunden, dass es hier keine InvokeRequired-Methode gibt, da es sich nicht um ein Control, sondern um ein Component handelt. Wie kann ich nun den Text im StatusStriplabel ändern aus meinem Thread?
Hier einmal mein ganzes Testprojekt um das Invoken zu verstehen, sowie das Erstellen von Threads.
VB.NET-Quellcode
- Imports System.IO
- Imports System.Threading
- Public Class Form1
- Private WithEvents FFmpeg As New Process
- Dim input As String = "C:\Users\Marvin\Desktop\test.m4a"
- Dim output As String = "C:\Users\Marvin\Desktop\test.mp3"
- Public cthread As Thread
- Public Delegate Sub SetTextCallback(ByVal value As String)
- Private Sub SetText(ByVal [text] As String)
- If Me.Label1.InvokeRequired Then
- Dim d As New SetTextCallback(AddressOf SetText)
- Me.Invoke(d, New Object() {[text]})
- Else
- Me.Label1.Text = [text]
- End If
- End Sub
- Public Sub convert()
- With FFmpeg
- .StartInfo.FileName = Path.Combine(Application.StartupPath, "ffmpeg.exe")
- FFmpeg.StartInfo.Arguments = "-i " & input & " -f mp3 -ab 160000 -acodec libmp3lame " & output
- FFmpeg.Start()
- Do Until .HasExited
- Loop
- SetText("Testtetstetsts")
- .Close()
- MessageBox.Show("Konvertierung abgeschlossen", "Erfolg", MessageBoxButtons.OK, MessageBoxIcon.Information)
- End With
- End Sub
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- cthread = New Thread(AddressOf convert)
- cthread.Start()
- End Sub
- End Class
Bezüglich auslesen einer Listview:
Wie kann ich diese in einen anderen Thread auslesen?
LG Marvin