/ / Wie schreibe ich thread-sichere Methoden? - vb.net, Multithreading, Thread-Sicherheit

Wie schreibe ich thread-sichere Methoden? - vb.net, Multithreading, Thread-Sicherheit

Ist dies eine gute Praxis und genug, um die Thread-Sicherheit der Methode zu gewährleisten DoSomething in VB.NET?

Public Class MyForm : Inherits Form

Public Sub DoSomething(parameter As Object)
If Me.InvokeRequired Then
Me.Invoke(Sub() DoSomething(parameter))
Else
"Do Something
End If
End Sub

End Class

Antworten:

3 für die Antwort № 1

Ich glaube, Sie können etwas anderes bedeuten Fadensicherheit als die übliche Definition des Begriffs. Die normale Bedeutung des Begriffs ist, dass dieselbe Methode oder dasselbe Objekt von mehreren Threads gleichzeitig ohne Fehler oder negative Nebenwirkungen aufgerufen werden kann. Typischerweise wird diese Art von Thread-Sicherheit durch Zustandslosigkeit und Sperren (z. SyncLock).

In Ihrem Beispiel ist dies jedoch nicht der Fallversuchen, diese Art von Thread-Sicherheit zu bieten, oder zumindest nicht direkt. Diese Art von Thread-Sicherheit wird erreicht, jedoch nur, indem alle Aufrufe auf demselben einzelnen Thread (dem UI-Thread) ausgeführt werden. WinForm-Anwendungen (von denen ich annehme, dass dies der Fall ist) erfordern, dass alle UI-Arbeiten auf dem UI-Thread ausgeführt werden. Wenn eine Methode, die etwas mit der Benutzeroberfläche tut, von einem anderen Thread aufgerufen wird, muss sie daher vor Abschluss ihrer Arbeit zunächst wieder auf den Benutzeroberflächenthread zugreifen. Für dieses spezielle Szenario ist der von Ihnen bereitgestellte Code in Ordnung.