私はサイトを見渡しましたが、この件に関する私が見つけた質問は、C#(私が開発したアプリケーションはVB.NETで書かれています)ですので、 1。セーブ機能がうまく動作しますが、ときに私は、クロススレッドのエラーを取得するクロススレッド操作が有効ではありませんVB.NET
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
:
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
そして、ここでは、メソッドです:私は私のスレッドを呼び出していますのはここ
ですプログラムはカーソルをデフォルトに戻そうとします。この問題を解決するにはどうすればよいですか?
私は他のものを忘れて信じられません...日の終わりFTL!ソリューションに感謝します:) – Anders
@アンダーソン:個人的に私は 'Else'なしでそれを残して、' Me.Invoke() 'の直後に' Return'を追加して、メソッドがそれ以上実行されないようにします。ネスティングを減らしてコードを読みやすくするのに役立ちます。 – STW
@yoooder:チップをありがとう、私はこれを念頭に置いておきます。 – Anders