Ich sah mich auf der Website und die Fragen zu diesem Thema waren für C# (die Anwendung, die ich pflege geschrieben ist in VB.NET geschrieben), so entschuldige ich mich, wenn ich übersehen ein.Cross-Thread-Operation nicht gültig VB.NET
Hier ist, wo ich mein Thread nenne:
Private Sub saveBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles saveBtn.Click
If Not LoadedFilePath = String.Empty Then
Dim oTrd = New Threading.Thread(AddressOf SaveData)
oTrd.Start()
End If
End Sub
Und hier sind die Methoden:
Private Sub SaveData()
SaveData(LoadedFilePath)
End Sub
Private Sub SaveData(ByVal filepath As String)
If InvokeRequired Then
Me.Invoke(New MethodInvoker(AddressOf SaveData))
End If
Try
Me.Cursor = Cursors.WaitCursor
Dim oSettings As New SettingsClass(filepath)
Dim oEnc As New AES
With oSettings
//' Code removed for brevity
End With
oEnc = Nothing
oSettings.SaveSettings()
savedLbl.Visible = True
If SavedTimeout IsNot Nothing Then
Try
SavedTimeout.StopEvent()
Catch
End Try
End If
SavedTimeout = New TimedEvent(Now.AddSeconds(5))
SavedTimeout.StartEvent()
Me.Cursor = Cursors.Default
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Die Save-Funktion funktioniert gut, aber ich habe den Cross-Thread-Fehler bei der Programm versucht den Cursor zurück auf Standard zu setzen. Was kann ich tun, um dieses Problem zu beheben?
wow haha ich kann nicht glauben, dass ich das andere vergessen habe ... Ende des Tages FTL! Danke für die Lösung :) – Anders
@Anders: Persönlich würde ich es ohne die 'Else' verlassen und fügen Sie einfach eine 'Return' direkt nach' Me.Invoke() ', um die Methode von weiteren Ausführen zu stoppen. Es hilft, den Code durch Reduzierung der Verschachtelung einfach zu lesen. – STW
@yoooder: Danke für den Tipp, das werde ich mir merken. – Anders