1
这是一个好的做法,并且足以确保VB.NET中的方法DoSomething
的线程安全性?如何编写线程安全的方法?
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
谢谢你的出色答案!我有时使用过'SyncLock',我明白你的意思,但是由于缺乏知识,我不明白,什么是无状态*。你能否给我一个提示,去了解它? – VBobCat
我的意思是,如果方法或对象没有保持内部状态,那么它通常被认为是线程安全的。换句话说,只要这些方法要求将所有数据作为输入参数并将所有结果作为返回值返回,并且不要将数据读取或写入其自己的任何字段,那么可以同时被多个线程调用。如果对象维护调用之间的值,尤其是调用它的方法或属性导致它的状态改变,那么它是不安全的,因为它的状态是不稳定的。 –
我猜可能对我来说使用的更好的术语是_Immutability_,因为这更一般。 –